请参阅代码如下:谁应该负责释放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