【发布时间】:2011-06-01 00:58:57
【问题描述】:
我在 InventoryFilteredTVC 中有一个名为 NSArray 类型的数据的属性,这是一个示例代码:
NSArray *results = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%i", [array retainCount]);
InventoryFilteredTVC *filteredTVC = [[InventoryFilteredTVC alloc] initWithStyle:UITableViewStylePlain];
[filteredTVC setTitle:@"Search Results"];
[filteredTVC setData:results];
NSLog(@"%i", [array retainCount]);
这会返回:
1
1
这是为什么呢?为什么不保留数据?此外,当我尝试在 InventoryFilteredTVC 中的 dealloc 方法中释放数据时,我遇到了崩溃,这显然是因为数据没有被保留。我做错了什么?
编辑:我的财产被定义为
@property (nonatomic, retain) NSArray *data;
【问题讨论】:
-
data属性是如何定义的?setData:是如何定义的? -
粘贴您的 InventoryFilteredTVC 对象的 dealloc 代码。
-
简答:不要调用retainCount。
标签: objective-c cocoa-touch nsarray