私はこれらすべての質問をチェックしました...
...そして、メッセージがクラスに送信されるときに、インスタンスメソッドがクラスのインスタンスでどのように使用され、クラスメソッドがクラスでどのように使用されるかだけが説明されています。これは役に立ちますが、クラス メソッドとインスタンス メソッドを使用する理由を知りたいです。
私はこれらすべての質問をチェックしました...
...そして、メッセージがクラスに送信されるときに、インスタンスメソッドがクラスのインスタンスでどのように使用され、クラスメソッドがクラスでどのように使用されるかだけが説明されています。これは役に立ちますが、クラス メソッドとインスタンス メソッドを使用する理由を知りたいです。
一般に、オブジェクトの特定のインスタンスで動作するコードが必要な場合は、インスタンス メソッドを作成する必要があります。一般的にはそのクラスに関係するが、おそらくそのクラスの特定のオブジェクトを操作しない何かを行う必要がある場合は、クラス メソッドを作成します。
実際には、ほとんどすべてのメソッドがインスタンス メソッドであることがわかります。NSString
、NSArray
、などの既存の Objective-C クラスを見てみるUIView
と、それらのメソッドの大部分がインスタンス メソッドであることがわかります。クラス メソッドの最も一般的な使用法 (前述のクラスを見てください) は、autorelease
オブジェクトを返す便利なコンストラクター、またはシングルトン アクセサーです。
length
の方法を検討してくださいNSString
。なぜこれはインスタンス メソッドであり、クラス メソッドではないのですか? NSString
特定のインスタンスにその長さを尋ねることだけが意味があるため、これはインスタンス メソッドです。一般NSString
に、長さを要求する (つまり、長さがクラス メソッドである場合) ことは意味がありません。
一方、NSNumber
特定のシステムに保存できる最大の整数値を返すメソッドを追加したいとしましょう。この場合、特定のインスタンスから独立しているという一般的な質問をしているだけなので、それはクラス メソッドである必要があります。NSNumber