私は文字列と共に任意のオブジェクトを格納しなければならないクラスを実装しています。すなわちオブジェクトを保持せずにオブジェクトと文字列のペアを格納する方法と、使用するストレージの種類は何ですか?
myUIViewObject, @"that's a nice view"
myUIViewController, @"not really special"
myOtherObject, @"very important one"
このリストは拡張され、変更された時点で、私はここにNSMutableDictionaryの使用について考えることができます。
- (NSString*)checkObjNoteStringForObject:(id)anyObjectInList;
他に:しかし、私はつまり、私はそうのようにそれを求めるときに容易myUIViewControllerまたはmyOtherObjectのための一致する文字列を見つけたい、
オブジェクトがキーでなければなりません...本当にわかりません問題は、オブジェクトがその "リスト"に追加されたときに、そのためにオブジェクトが保持されないようにすることです。 NSMutableDictionaryは内容を保持していますか?私はちょうどこの不要な振る舞いを元に戻すために後で-releaseを送ることができます。それとももっとエレガントな方法がありますか?
あなたはどう思いますか?皆さんありがとう!
キー(この場合はNSValue)がコピーされると、NSValueによって参照されるオブジェクトもコピーされません。オブジェクトの中には大きなメモリフットプリントがあるものもあるので、オブジェクトがコピーされると悪いことになります。 –
いいえ。NSValueはタイプ情報が添付された単なる「ビットオブバッグ」なので、真のコピーはポインタをあなたのオブジェクトにコピーするだけです。 NSValueは不変なので、-copyの実装は単に-retainを呼び出すだけです。しかし、独自のオブジェクトをキーとして使用している場合は、区別が重要になります。彼らはNSCopyingプロトコルを実装する必要があります。 –