繁体   English   中英

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

[英]dealloc, use release or set to nil for properties?

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

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

版本001

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

版本002

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM