2011-09-20 7 views
5

現在、私はAppDelegateクラスのプロパティを使用しています。シングルトンクラスの@propertyを設定する

私の必要性が増えるにつれて、これらのグローバルプロパティのうちの1つ以上が必要になります。そのため、プロパティを保持し、それらを管理するシングルトンクラスを作成すると考えました。 シングルトンに関する多くの情報が見つかりましたが、クラスのインスタンスを持たずにプロパティを変更することは可能ですか?例えば

@interface Tools : NSObject 

@property (nonatomic,retain) NSDictionary* item; 

... 

@end 

私がやりたい:

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

すべての私の考えでは、クラスのツールは何のインスタンスを持っていない問題になってしまいました。 私は静的変数(プロパティではありません)を設定しようとしましたが、うまくいきましたが、これは正しい理由ではないと確信しています。

が、別の質問、追加関連:プロジェクトPrefix.pchファイルに

#import "Tools.h" 

、アイテムのプロパティは、プロジェクトでどこからでも利用できるようになりますので、良いアイデアはありますか?

答えて

5

あなたは、シングルトンを使用するためのインスタンスが必要であることは間違いありません。しかし、どこに問題がありますか?

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

sharedInstanceメソッドは、唯一のToolsインスタンスの適切なインスタンス化を保証します。私はそれに慣れた。代替はクラスメンバーです。あなたはこのスレッドを見てもよい:

BOOL being reset to NO in init method

+0

ありがとうございます!それはまさに私がやろうとしていたものです。 – EladG

2

は限りのObjective-Cについての私の知識が懸念されるとして、あなたは、インスタンスを作成せずに@property呼び出すことができるようなものはありません。
あなたはHow Do I declare Class-level Property in Objective-C

+0

理解しやすい。ありがとう、それは情報を知って良いです。 – EladG

0

this ARC-related threadのクラス@propertiesに関する議論(ARCでシングルトンを行う際に推奨されるクラスメソッドである)がありますを参照してくださいすることができます。クラス変数はまだ存在しませんが、あなたはレーダーを使ってその機能を投票することをお勧めします。

関連する問題