17

私はこれらすべての質問をチェックしました...

...そして、メッセージがクラスに送信されるときに、インスタンスメソッドがクラスのインスタンスでどのように使用され、クラスメソッドがクラスでどのように使用されるかだけが説明されています。これは役に立ちますが、クラス メソッドとインスタンス メソッドを使用する理由を知りたいです。

4

1 に答える 1

47

一般に、オブジェクトの特定のインスタンスで動作するコードが必要な場合は、インスタンス メソッドを作成する必要があります。一般的にはそのクラスに関係するが、おそらくそのクラスの特定のオブジェクトを操作しない何かを行う必要がある場合は、クラス メソッドを作成します。

実際には、ほとんどすべてのメソッドがインスタンス メソッドであることがわかります。NSStringNSArray、などの既存の Objective-C クラスを見てみるUIViewと、それらのメソッドの大部分がインスタンス メソッドであることがわかります。クラス メソッドの最も一般的な使用法 (前述のクラスを見てください) は、autoreleaseオブジェクトを返す便利なコンストラクター、またはシングルトン アクセサーです。

lengthの方法を検討してくださいNSString。なぜこれはインスタンス メソッドであり、クラス メソッドではないのですか? NSString特定のインスタンスにその長さを尋ねることだけが意味があるため、これはインスタンス メソッドです。一般NSStringに、長さを要求する (つまり、長さがクラス メソッドである場合) ことは意味がありません。

一方、NSNumber特定のシステムに保存できる最大の整数値を返すメソッドを追加したいとしましょう。この場合、特定のインスタンスから独立しているという一般的な質問をしているだけなので、それはクラス メソッドである必要があります。NSNumber

于 2012-06-24T02:35:45.607 に答える