[英]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.