我有一个包含对象的NSArray
。 我想创建一个次要的NSArray
,其中只包含第一个NSArray
中的某些对象。 我有类似以下的东西:
[array1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if (something) {
[array2 addObject:obj]; // (1)
}
}];
[array1 release]; // (2)
我认为
(1)
会增加对象的retainCount
(从1增加到2),然后(2)
会减少它(对于添加在array2
中的对象,将其从2降低到1,对于未添加的对象,将其从1降低到0)。因此,我期望在这样做之后,可以安全地访问来自
array2
的对象,并且未通过测试的不符合规范的对象将被释放。这是正确的吗?
NSMutableArray
来存储第二个数组。 - Paul.sarray1
。请参见+[NSPredicate predicateWithBlock:]
和-[NSArray filteredArrayUsingPredicate:]
。这种更清晰的方法的一个附加好处是,你不必那么费心地考虑内存管理! :) - Jonathan Sterling