<XCode产品&gt;分析结果

时间:2011-09-22 20:45:57

标签: objective-c xcode

我从Produce&gt;获得了一些不寻常的回应。分析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;

2 个答案:

答案 0 :(得分:5)

令人困惑的措辞,但正确,错误信息。

当你这样做时:

[self.foo release];

这很容易为支持foo属性的实例变量生成悬空引用。即就编译器而言,没有retain表示release正在平衡。

要么:

[fooIVar release];

(假设@synthesize foo = fooIVar;

或者:

self.foo = nil;

答案 1 :(得分:1)

代码应为:

[fileName release]

如果我添加self,我会收到同样的错误。

另外不要忘记添加

 [super dealloc];