dealloc,使用release或设置为nil属性?

时间:2010-11-08 13:01:48

标签: iphone objective-c cocoa-touch

在实现dealloc时,我在书籍和网络上查看各种代码时都注意到了一点混乱。我的问题是在使用@property时我应该使用以下哪个。到目前为止,我一直在使用VERSION_001。

@property(nonatomic, retain) NSString *name;
@property(nonatomic, retain) NSString *type;
@property(nonatomic, retain) NSString *payload;
@property(nonatomic, retain) NSString *orbit;

VERSION 001

- (void)dealloc {
    [name release];
    [type release];
    [payload release];
    [orbit release];
    [super dealloc];
}

VERSION 002

- (void)dealloc {
    [self setName:nil];
    [self setType:nil];
    [self setPayload:nil];
    [self setOrbit:nil];
    [super dealloc];
}

1 个答案:

答案 0 :(得分:17)

没有真正的区别,除非您没有使用@synthesize关键字。当您将属性设置为nil时,它们将由setter在幕后释放。现在,第一版可能会有轻微的性能提升,因为不需要在幕后发生(例如指针比较,以及苹果隐藏在幕后的其他所有内容)。我总是使用版本001,因为它更加重要,未来的开发人员不必通过我的代码来挖掘我正在完成的工作。