通常我寫我的dealloc看起來像這樣:在dealloc的iVars上使用self?
- (void)dealloc {
[coffeeList release];
[super dealloc];
}
但今天我輸入(見下文),有點疑惑,爲什麼我得到了橫貫CLANG靜態分析代碼中的錯誤。正如我所說的,我通常不會在dealloc中將自己添加到iVars中,但是當我發現這是發生了什麼時,我只是有點好奇。
- (void)dealloc {
[[self coffeeList] release];
[super dealloc];
}
加里。
我只是新的objective-c,但對我的眼睛都[[self coffeeList]發佈];和[coffeeList發佈];似乎是一樣的。雖然看起來語法會混淆LLVM 1.5 CLANG。 – fuzzygoat 2010-10-28 16:47:55
他們不一樣。內存管理規則告訴你只發布你擁有的對象。這裏發生的是'[self coffeeList]'擁有'coffeeList',而不是你。它實現的基本原理是:'return [[coffeeList retain] autorelease];'如果你知道你的規則,就意味着它擁有coffeeList,並且將在未來某個任意點發布。您需要直接*釋放伊娃。 – jer 2010-10-28 17:19:50
謝謝你,正是我所追求的,我想了解發生了什麼,現在我明白了。非常感謝... – fuzzygoat 2010-10-28 19:56:10