我从Produce>获得了一些不寻常的回应。分析Xcode 4中的选项似乎对我没有任何意义。例如,我总是被教导在dealloc
方法中释放实例变量,但Analyze给了我这个:
- (void)dealloc {
[self.fileName release];
//Incorrect decrement of the reference count of an object that is not owned at this point by the caller
非常令人困惑,任何人都能对这一点有所了解吗?
该属性如下所示:
@property (nonatomic, retain) NSString * fileName;
答案 0 :(得分:5)
令人困惑的措辞,但正确,错误信息。
当你这样做时:
[self.foo release];
这很容易为支持foo
属性的实例变量生成悬空引用。即就编译器而言,没有retain
表示release
正在平衡。
要么:
[fooIVar release];
(假设@synthesize foo = fooIVar;
)
或者:
self.foo = nil;
答案 1 :(得分:1)
代码应为:
[fileName release]
如果我添加self
,我会收到同样的错误。
另外不要忘记添加
[super dealloc];