2011-09-20 55 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是類的方法)。類變量尚不存在,但我建議你提交一個雷達投票功能。