fuz*_*oat 2 cocoa memory-management objective-c
@property (copy) NSString *name;
@property (copy) NSString *orbit;
@property (copy) NSNumber *mass;
@property float surfaceTemp;
@property float rotationSpeed;
Run Code Online (Sandbox Code Playgroud)
目前有这个
- (void)dealloc{
[name release];
name = nil;
[orbit release];
orbit = nil;
[mass release];
mass = nil;
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
如果我使用Dot Notation(Objective-C 2.0)写这个是吗?
- (void)dealloc{
self.name = nil;
self.orbit = nil;
self.mass = nil;
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
加里
pix*_*x0r 10
使用你的setter方法是不好的做法-dealloc.请[name release]改用.
在调用setter期间-dealloc可能会产生意想不到的后果.如果使用KVO,设置属性可能会触发其他代码运行导致副作用,因为您的对象已经开始释放实例变量.即使不使用KVO,如果您的setter方法依赖于可能已经释放的其他实例变量,这可能会导致潜在的问题.
(更新以反映评论)
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |