我一直在闲逛如何在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将其设置为nil。任何人都可以告诉我这些是否都是真的,如果是这样,我应该坚持“好习惯”还是只是让我的代码更快,不管什么是“好习惯”?
提前谢谢。
答案 0 :(得分:2)
如果您有the first choice is better选项,因为它不太可能有副作用。但速度问题几乎肯定与任何实际应用无关。 release
中属性访问者与dealloc
的速度对您的程序没有任何明显影响。 (如果没有别的,你可能希望通过削减一些消息来获得dealloc
的第一个地方分配对象的成本{{1}},所以如果这是一个真正的问题,那么更好的方法将减少分配。)