23

という名前のクラスがあるとしCalculatorます。と呼ばれるクラスメソッドがありrunProgramます。クラスの実装内でこのクラス メソッドを呼び出したい場合、これら 2 つの違いは次のようになります。

[Calculator runProgram]

また

[self runProgram]

これらはどちらも同じですか?

4

1 に答える 1

39

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

[self runProgram]

ここで、selfはオブジェクト インスタンス自体を意味するため、実行時エラーが発生します。使いたい

[[self class] runProgram]

代わりは。

ただし、このメソッドを別のクラス メソッドから呼び出すと、

[self runProgram]

selfクラス自体を参照するようになったため、正しいです。私は使用することをお勧めしません

[Calculator runProgram]

クラスのサブクラスが、Calculatorオーバーライドされた可能性のあるメソッドではなく、誤ってスーパークラスのメソッドを呼び出すためです。

于 2012-04-29T05:36:27.463 に答える