請參閱代碼如下:誰應該負責釋放setter的參數?
- (void) setSomeThing:(NSString *) someThingNew
{
if(someThing!=someThingNew)
{
[someThingNew retain];
[someThing release];
someThing = someThingNew;
}
}
... ...
- (void) dealloc
{
[someThing release];
[super dealloc];
}
@end
二傳手someThingNew
的參數已經retain
在setter方法,這意味着它的保留計數爲1
這裏的問題是:是someThingNew
應該release
?
還是因爲someThing
和someThingNew
指向同一個對象,並在dealloc
方法someThing
一直release
所以someThingNew
點nil
?
Objective C的內存管理指南:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html – Kreiri 2013-03-05 13:42:59