2011-09-22 23 views
2

我從Xcode 4中的Produce> Analyze選項中看到一些不尋常的反應,這些反應似乎對我沒有任何意義。例如,我總是被教導以釋放dealloc方法實例變量,但分析給了我這樣的:XCode產品>分析結果

- (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

你有沒有實際分配一個值,伊娃? – cpjolicoeur

回答

5

混淆字眼,但正確的,錯誤信息。

當你這樣做:

[self.foo release]; 

,可以很容易地生產的實例變量來頭foo財產懸空參考。即就編譯器而言,沒有retain表示release正在平衡。

要麼是:

[fooIVar release]; 

(假設@synthesize foo = fooIVar;

或者:

self.foo = nil; 
+0

當伊娃的名字是'foo'時,你爲什麼要寫'fooIVar'? – johnbakers

+0

我們不知道伊娃是真正命名的,因爲OP沒有發佈'@ synthesize' ....因此,伊娃爾名字上有一些免費輪子來標記它是什麼,無論的現實。 – bbum

1

該代碼應閱讀:

[fileName release] 

我得到同樣的錯誤,如果我加self

另外不要忘記添加

[super dealloc];