2011-12-08 5 views
3

私はここで正しいことをするための十分な知識がありません。クラスメソッドを使用して静的変数を設定できますか?

私は、現在作業しているレベルから1ステップ下がっている多数の番号を持っています。私のビューコントローラは、親オブジェクトのテーブルを表示しており、それぞれに子オブジェクトの数を示す詳細インジケータが表示されています。

ユーザは、NSDictionaryに格納されているフィルタ条件のセットを作成できます。私の子オブジェクトには、これらの基準に基づいてフィルタが通過するかどうかを判断するために実行する複雑な計算セットがあります。これは外部的には単純な読み取り専用のブール値プロパティで表されます。

子供のオブジェクトに静的変数を設定してフィルタ設定辞書を保持することで、ユーザーのデフォルトまたは同様のものを呼び出す必要がなくなり、各子オブジェクトのフィルタ設定を取得できます。

フィルタ設定を作成する時点で、私は子オブジェクトへの特定のポインタを持っていないので、フェッチ要求を作成するだけではなく、これは適切なのですか?

.H:

@interface Child : NSManagedObject 
+(void)setFilterSettings:(NSDictionary*)newFilterSettings; 
@end 

が.M:

static NSDictionary *filterSettings; 

@implementation Child 

+(void)setFilterSettings:(NSDictionary*)newFilterSettings 
{ 
    filterSettings = newFilterSettings; 
} 
@end 

とフィルタの設定が行われます。

[Child setFilterSettings:newFilterSettings]; 

は、これが有効であると仮定すると、どちらかといえば、何をすべきか、私はメモリ管理の面で行う必要がありますか?私はARCを使用しています。

+0

はい、できます;しかし、それはあなたのタイトルのようにCではありませんが、Objective C –

+0

@BasileStarynkevitch - 私を混乱させている静的変数の範囲はCに存在するのでしょうか? – jrturton

+1

@hypercrypt - すべてのもの – jrturton

答えて

2

上記のコードに問題はありません。これはObjCには存在しないクラス変数を実装するための標準的な方法です。

(サイドノート:私はARCの大ファンです、....誰もが、すぐに彼らができるようにそれを使用する必要がありますが、私は保持されないセッターを見たとき、私はまだ本能的にけいれん)

+0

アクセサーを取得する必要がある以外は、コードに問題はありません。 – JeremyP

+0

静的変数の '__strong'は正しいでしょうか?コンパイラはそれを許可しているようだ。 –

+0

@JeremyP - 子オブジェクトの内部でのみ必要です。アクセサーを取得する必要がありますか?インスタンスメソッドで直接変数を使用する予定です。 – jrturton

関連する問題