2010-11-24 70 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

相關問題