2012-04-29 1 views

答えて

31

インスタンスメソッド内の場合:この中

[self runProgram] 

selfは、オブジェクトのインスタンス自体を意味し、従って、ランタイムエラーが発生します。あなたは代わりに

[[self class] runProgram] 

の代わりに使用します。あなたはその後、別のクラスのメソッドからこのメソッドを呼び出す場合、今selfはクラス自体を指し以来

しかし、

[self runProgram] 

は、正しいです。私は、そのクラスのサブクラスが誤ってスーパークラス(Calculator年代)の代わりに、おそらくオーバーライドされたメソッドのメソッドを呼び出すことになるので

[Calculator runProgram] 

を使用することを阻止するだろう。

+1

明示的に 'Calculator'とは関係のないクラスに対しては' [Calculator runProgram] 'が正しいと警告していますが、さまざまなファクトリメソッドを使用していますか? – Tommy

+0

+1:もちろん、他の方法はありません!しかし、OPはimplementorクラス自体でメソッドを呼び出すことについて尋ねました。 –

関連する問題