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