这个问题是指Apple的示例“TableSearch”项目,它实现了一个可搜索的表视图。相关的源代码可以在这里找到:
在此示例项目中,“MainViewController”类具有用于保存搜索词的属性:
@property (nonatomic, copy) NSString *savedSearchTerm;
但是dealloc没有发布“savedSearchTerm”:
- (void)dealloc
{
[listContent release];
[filteredListContent release];
[super dealloc];
}
(示例代码不会在其他地方释放“savedSearchTerm”(尽管在某些情况下它在viewDidLoad中将其设置为nil))。
鉴于Apple的内存管理规则说你应该发布使用“alloc”,“new”或“copy”创建的对象,为什么不需要发布“savedSearchTerm”?
答案 0 :(得分:2)
应该在-dealloc
方法中发布。如果示例代码没有这样做,请在http://bugreport.apple.com提交错误并将其修复。
答案 1 :(得分:0)
我还没有看过这个示例,但正如您所描述的那样,需要释放saveSearchTerm。
通过
self.saveedSearchTerm = nil;
或
[savedSearchTerm release];
如果你只看到
savedSearchTerm = nil;
然后这可能是内存泄漏,因为它只是将ivar设置为nil而不释放对象。