2011-09-20 105 views
5

当前我在AppDelegate类中使用了一个Property。设置一个Singleton类的@property

现在,随着我的需求的增加,我需要更多的这些全局属性中的一个,所以我想要创建一个单身类,它将拥有这些属性并将它们管理。 我发现了很多关于单身人士的信息,但我想不通,是否有可能在没有该实例的情况下修改该属性?

例如:

@interface Tools : NSObject 

@property (nonatomic,retain) NSDictionary* item; 

... 

@end 

我想这样做:

[Tools setItem:someDict]; 
someClass = [someClass alloc] initWithItem:[Tools getItem]]; 

所有我的想法结束了该类工具没有实例的问题。 我试过设置项目是静态变量(不是属性),它工作,但我相信这不是正确的,为什么要这样做。

相关但不同的问题,并补充说:

#import "Tools.h" 

给项目Prefix.pch文件,因此该项目的属性将提供来自世界各地的项目,是一个好主意?

回答

5

你是对的,你需要一个使用单例的实例。但问题在哪里?

[Tools sharedInstance].item = someDict; // or 
[[Tools sharedInstance] setItem:someDict; 

然后,sharedInstance方法确保正确实例化唯一的Tools实例。我习惯了。另一种是班级成员。你可以看看这个线程:

BOOL being reset to NO in init method

+0

谢谢!这正是我想要做的。 – EladG

0

有阶级@properties在this ARC-related thread讨论(推荐的方法做单身与ARC是类的方法)。类变量尚不存在,但我建议你提交一个雷达投票功能。