Iphone 使用单例创建可由多个视图访问的数组
这是一个典型的问题 我想从我的应用程序中的任何位置访问对象数组。我还想使用单例来实现这一点。我的问题是:Iphone 使用单例创建可由多个视图访问的数组,iphone,objective-c,xcode,cocoa-touch,singleton,Iphone,Objective C,Xcode,Cocoa Touch,Singleton,这是一个典型的问题 我想从我的应用程序中的任何位置访问对象数组。我还想使用单例来实现这一点。我的问题是: 在哪里实例化我的单例对象 我在哪里实例化我的NSMutable对象数组 如何从项目中的任何位置引用此阵列 非常感谢所有代码和示例 编辑1 这就是我目前所拥有的。我不知道如何正确、一致地访问这些香蕉: #import <Foundation/Foundation.h> @interface Singleton : NSObject { NSMutableArray *ba
#import <Foundation/Foundation.h>
@interface Singleton : NSObject {
NSMutableArray *bananas;
}
@property (nonatomic, retain) NSMutableArray *bananas;
@end
#import "Singleton.h"
static Singleton *mySingleton;
@implementation Singleton
@synthesize bananas;
#pragma mark SingletonDescption stuff
+ (Singleton *)mySingleton
{
if(!mySingleton){
mySingleton = [[Singleton alloc]init];
}
return mySingleton;
}
+ (id)allocWithZone:(NSZone *)zone
{
if (!mySingleton) {
mySingleton = [super allocWithZone:zone];
return mySingleton;
} else {
return nil;
}
}
- (id)copyWithZone:(NSZone*) zone
{
return self;
}
- (void)release
{
// NO OP
}
@end
你的单身汉喜欢这样:
@interface Singleton : NSObject
@property (nonatomic, retain) NSMutableArray *bananas;
+(Singleton*)singleton;
@end
@implementation Singleton
@synthesize bananas;
+(Singleton *)singleton {
static dispatch_once_t pred;
static Singleton *shared = nil;
dispatch_once(&pred, ^{
shared = [[Singleton alloc] init];
shared.bananas = [[NSMutableArray alloc]init];
});
return shared;
}
@end
第一次使用单例时,它就被初始化了。您可以随时从任何地方调用它:
NSLog(@"%@",[Singleton singleton].bananas);
你的单身汉喜欢这样:
@interface Singleton : NSObject
@property (nonatomic, retain) NSMutableArray *bananas;
+(Singleton*)singleton;
@end
@implementation Singleton
@synthesize bananas;
+(Singleton *)singleton {
static dispatch_once_t pred;
static Singleton *shared = nil;
dispatch_once(&pred, ^{
shared = [[Singleton alloc] init];
shared.bananas = [[NSMutableArray alloc]init];
});
return shared;
}
@end
第一次使用单例时,它就被初始化了。您可以随时从任何地方调用它:
NSLog(@"%@",[Singleton singleton].bananas);
@尼克,对于入会者来说,这可能看起来是同一个问题,但事实并非如此。我看了那个问题,仍然感到困惑。但是谢谢:)这怎么不是同一个问题呢?@Nick,这看起来像是同一个问题,但事实并非如此。我看了那个问题,仍然感到困惑。但是谢谢:)这怎么不是同一个问题呢?这似乎是一个好的开始,但我对语法还是有点不清楚。你能看一下我刚刚发布的代码,并指出我将如何调用数组吗?谢谢:)@Eric Brotto恐怕我不明白你的问题,或者还有什么更好的地方。看来你的单例生成工作进行得很顺利。@Eric Brotto在你的
mySingleton
方法中,确保初始化数组。或者为数组编写自己的getter,而不是合成它,这样您可以懒洋洋地创建数组。@fzwo,我正试图使用self.bananas=[[NSMutableArray alloc]init]初始化数组,但没有这样的运气。如果我要你帮我解释一下,我很抱歉:(@Eric Brotto还有,你没有把你的单身作为单身!使用singleton*mySingleton=[singleton mySingleton]
。然后想想更好的类和方法名!调用你的单例类BananaBunch
,它的单例getterdefaultBunch
,或者类似的东西怎么样?你的代码会是:BananaBunch*myBunch=[BananaBunch defaultBunch];[myBunch addBanana:yellowBanana]
这似乎是一个好的开始,但我对语法仍有点不清楚。你能看一下我刚刚发布的代码,也许能指出我将如何调用数组吗?谢谢:)@Eric Brotto恐怕我不明白你的问题,或者还有什么更好的地方。看来你的单例生成工作进行得很顺利。@Eric Brotto在你的mySingleton
方法中,确保初始化数组。或者为数组编写自己的getter,而不是合成它,这样您可以懒洋洋地创建数组。@fzwo,我正试图使用self.bananas=[[NSMutableArray alloc]init]初始化数组,但没有这样的运气。如果我要你帮我解释一下,我很抱歉:(@Eric Brotto还有,你没有把你的单身作为单身!使用singleton*mySingleton=[singleton mySingleton]
。想想更好的类和方法名!调用你的singleton类BananaBunch
,它的singleton getterdefaultBunch
,或者类似的东西怎么样?你的代码会读成:BananaBunch*myBunch=[BananaBunch defaultBunch];[myBunch addBanana:yellowBanana];