1
我一直在徘徊如何我可以在我的dealloc方法很长一段时间释放我的保留属性。为了清楚起见,这里是一些示例代码:如何释放保留的属性
@interface MyClass: NSObject
{
//...
NSString *myStr;
//...
}
@property (retain, nonatomic) NSString *myStr;
//...
@end
@implementation MyClass
@synthesize myStr;
//...
//version 1 of dealloc
-(void)dealloc
{
[myStr release];
//...
}
//version 2 of dealloc
-(void)dealloc
{
self.myStr = nil;
}
//...
@end
正如你所看到的,在我的示例代码是dealloc方法的两个版本。就我而言,第一个导致机器码比第二个小,因此速度更快。但是我曾经听说,以第二种方式处置保留的财产是一种好习惯,即通过使用self关键字调用setter来将其设置为零。谁能告诉我这些是否都是真的?如果是这样,我应该坚持“好习惯”还是只是让代码更快,而不考虑“好习惯”?
预先感谢您。
明白了,谢谢。我了解到“self.myStr = nil;”将会是“[myStr release]; myStr = nil;”(这里有两条语句)。所以我认为“[myStr发布]”(单一语句)会更快。顺便说一句,“副作用”,你在这里的意思是什么? – xuxu
@xuxu:KVO通知,对撤消堆栈的更改 - 这类事情。 – Chuck