设置Singleton类的@property

Ela*_*adG 5 iphone macos ios4 ios

目前我在AppDelegate类上使用了一个Property.

现在,随着我的需求消耗,我需要更多的这些全局属性,所以我想创建一个Singleton类,它将保存属性并将管理它们.我发现了很多关于单身人士的信息,但我无法弄清楚,是否有可能在没有班级实例的情况下修改该属性?

例如:

@interface Tools : NSObject

@property (nonatomic,retain) NSDictionary* item;

... 

@end
Run Code Online (Sandbox Code Playgroud)

我想要做:

[Tools setItem:someDict];
someClass = [someClass alloc] initWithItem:[Tools getItem]];
Run Code Online (Sandbox Code Playgroud)

我的所有想法最终都遇到了类Tools没有实例的问题.我已经尝试将项目设置为静态变量(不是属性),这有效,但我确信这不是正确的原因.

相关但不同的问题,添加:

#import "Tools.h"
Run Code Online (Sandbox Code Playgroud)

对于项目-Prefix.pch文件,所以项目属性将从项目的任何地方可用,是个好主意?

Kay*_*Kay 6

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

[Tools sharedInstance].item = someDict; // or
[[Tools sharedInstance] setItem:someDict;
Run Code Online (Sandbox Code Playgroud)

然后,sharedInstance方法确保正确实例化一个且仅有Tools实例.我习惯了.另一种选择是成员.你可以看一下这个帖子:

BOOL在init方法中重置为NO