我有一个带有属性的 UIViewController
@property (nonatomic, retain) NSMutableArray *speakerFetchResults;
然后我在 viewWillAppear 中设置属性
self.speakerFetchResults = [[[self.speakerViewContext executeFetchRequest:request error:&error] mutableCopy] autorelease];
并想在 UIViewController 的 dealloc 方法中再次释放它
[self.speakerFetchResults release];
但是,如果我分析我的文件,我会得到 [self.speakerFetchResults 发布];以下警告:
调用者此时不拥有的对象的引用计数不正确减少。
此外(我已经测试过了)我收到了这条消息
[ self 释放]
问题。
所以我有点困惑并删除了所有“ self ”。在此版本中或通常会导致程序中出现很多错误。所以我认为分析器是错误的,但我只是想请你帮忙。
你怎么看?
感谢您的帮助。
最佳答案
你不应该 call release on the object returned by the getter (getter 可能有副作用、自定义逻辑、返回自动释放的对象等,因此您不能假设 [self.speakerFetchResults release]
和 [speakerFetchResults release]
具有相同的结果)。
你可以简单地做:
self.speakerFetchResults = nil; // this releases the old value
或者,在 dealloc 中,不鼓励使用访问器:
[speakerFetchResults release];
关于ios - 使用 self.property 释放属性 - 分析器中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7293151/