gpt4 book ai didi

objective-c - 点符号解除分配?

转载 作者:行者123 更新时间:2023-12-03 16:24:12 24 4
gpt4 key购买 nike

@property (copy) NSString *name;
@property (copy) NSString *orbit;
@property (copy) NSNumber *mass;
@property float surfaceTemp;
@property float rotationSpeed;

目前有这个

- (void)dealloc{
[name release];
name = nil;
[orbit release];
orbit = nil;
[mass release];
mass = nil;
[super dealloc];
}

如果我使用点表示法(Objective-C 2.0)来写这个,这样对吗?

- (void)dealloc{
self.name = nil;
self.orbit = nil;
self.mass = nil;
[super dealloc];
}

加里

最佳答案

-dealloc 中使用 setter 方法是不好的做法。请改用[name release]

-dealloc期间调用setter可能会产生意想不到的后果。如果使用 KVO,设置属性可能会触发其他代码运行,从而导致副作用,因为您的对象已经开始释放实例变量。即使不使用 KVO,如果您的 setter 方法依赖于可能已发布的其他实例变量,也可能会导致潜在问题。

(更新以反射(reflect)评论)

关于objective-c - 点符号解除分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1505232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com