如何释放保留的财产

时间:2011-12-07 02:49:50

标签: objective-c

我一直在闲逛如何在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。任何人都可以告诉我这些是否都是真的,如果是这样,我应该坚持“好习惯”还是只是让我的代码更快,不管什么是“好习惯”?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果您有the first choice is better选项,因为它不太可能有副作用。但速度问题几乎肯定与任何实际应用无关。 release中属性访问者与dealloc的速度对您的程序没有任何明显影响。 (如果没有别的,你可能希望通过削减一些消息来获得dealloc的第一个地方分配对象的成本{{1}},所以如果这是一个真正的问题,那么更好的方法将减少分配。)

相关问题