2010-11-24 49 views
0

在Objective C中的init和dealloc方法中调用Accessor方法不安全吗?在Objective C中的init和dealloc方法中调用Accessor方法不安全吗?

+0

可能的重复[为什么我不应该在init/dealloc中使用Objective C 2.0访问器? ](http://stackoverflow.com/questions/192721/why-shouldnt-i-use-objective-c-2-0-accessors-in-init-dealloc) – zoul 2010-11-24 08:50:14

+1

@zoul:我同意它是重复的,但接受的答案不是完整的解释。它所说的只是“可能发生的事情”,这并不令人满意。出于这个原因,我没有投票结束。 – JeremyP 2010-11-24 09:32:00

回答

5

这取决于设定者。有些可能是安全的,有些可能不安全。问题是你不能确定哪个是子类可以覆盖它们。如果一个子类覆盖了你在-init中使用的setter,那么在子类被完全初始化之前,这是一个潜在的不安全操作。您可能也想看看this question

0

虽然不知道为什么要在init或dealloc中调用访问器,但应该没有问题。你也不需要调用访问器,因为你在一个实例方法中,并且可以直接引用变量。

+1

如果setter在更新ivar的值之后做了一些非平凡的操作,那么您通常会在init中调用setter。 – 2010-11-24 09:21:27

相关问题