私はNSArray
オブジェクトを含んでいます。私は最初のNSArray
のオブジェクトのいくつかだけを含む二次NSArray
を作成したいと思います。私のようなものがあります:Objective-CオブジェクトをNSArrayからNSArrayに渡す
[array1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if (something) {
[array2 addObject:obj]; // (1)
}
}];
[array1 release]; // (2)
私は(1)
が増加すると考えていますが、オブジェクトのretainCount
(1から2にそれをもたらすであろう)、そして(2)
は(のために2から1にそれを持って来るそれを減少させますオブジェクトが追加されなかった場合はarray2
に追加され、1から0まで追加されます)。
これを実行すると、array2
からオブジェクトにアクセスすることは安全であり、テストに合格しなかった不適合オブジェクトは割り当てが解除されることが期待されます。
これは間違いありませんか?
はい、正しく表示されます。 – aroth
入力ミスがあるのかどうかわかりませんが、2番目の配列にはNSMutableArrayが必要です –
これはあまり望ましくない戦略です。実際には、述部に対して 'array1'をフィルタリングする必要があります。 ['+ [NSPredicate predicateWithBlock:]'](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSPredicate_Class/Reference/NSPredicate.html)および[' - [ NSArray filteredArrayUsingPredicate:] '](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html)を参照してください。このより明確なアプローチの利点は、メモリ管理について非常に考える必要がないことです。 :) –