2010-11-24 2 views
0

Objective Cのinitメソッドとdeallocメソッドでアクセサメソッドを呼び出すのは安全ですか?Objective Cのinitメソッドとdeallocメソッドでアクセサメソッドを呼び出すのは安全ですか?

+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

+1

@zoul:私はそれが重複していることに同意しますが、受け入れられた答えは完全な説明ではありません。それは満足できるものではない "厄介なことが起こるかもしれない"ということだけです。この理由から、私は閉会に投票していません。 – JeremyP

答えて

5

設定者によって異なります。いくつかは電話するのが安全かもしれない。問題は、サブクラスがそれらをオーバーライドすることができるため、どちらが確実であるかわからないことです。 -initで使用しているセッターをサブクラスがオーバーライドすると、サブクラスが完全に初期化される前に呼び出されているため、安全でない可能性があります。

またthis questionを見てみたいことがあります。

+1

の値を更新超えていくつかの非自明な操作をした場合は、通常、初期化時にセッターを呼ぶようなサブクラス状態が取り壊された後にdeallocで、あなたはサブクラスアクセサを使用している可能性がある問題もあります。また、deallocでセッターを使用すると、あなたがほとんど望まないKVO通知がトリガーされるという問題もあります。 – JeremyP

+0

ありがとう@ジェレミー:ありがとう – Krishnan

0

は、initかのdeallocでのアクセサを呼び出すしたいと思う理由はわからないものの、問題があるべきではありません。また、インスタンスメソッドにあり、変数を直接参照できるため、アクセサを呼び出す必要はありません。

+1

セッターはIVAR –

関連する問題