gpt4 book ai didi

objective-c - 为什么我不应该在 init/dealloc 中使用 Objective C 2.0 访问器?

转载 作者:IT老高 更新时间:2023-10-28 11:42:56 25 4
gpt4 key购买 nike

@mmalc's responsethis question他说“一般而言,您应该在 dealloc(或 init)中使用访问器方法。”为什么mmalc会这样说?

我能想到的唯一真正原因是性能和避免@dynamic setter 的未知副作用。

讨论?

最佳答案

它基本上是一个将错误可能性降至最低的指南。

在这种情况下,您的 setter/getter 可能会不经意间对对象的状态做出直接或间接的假设。当对象处于设置或销毁过程中时,这些假设可能会成为问题。

例如,在下面的代码中,观察者不知道“示例”正在被销毁,并且可以假设其他已被释放的属性是有效的。

(您可以争辩说您的对象应该在自行拆除之前移除所有观察者,这是一种很好的做法,也是防止意外问题的另一个准则)。

@implementation Example

-(void) setFoo:(Foo*)foo
{
_foo = foo;
[_observer onPropertyChange:self object:foo];
}

-(void) dealloc
{
...
self.foo = nil;
}

@end

关于objective-c - 为什么我不应该在 init/dealloc 中使用 Objective C 2.0 访问器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/192721/

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