重複の可能性:
Objective-C: クラス vs インスタンス メソッド?
Objective-C - クラスメソッドと静的メソッドの違いは?
ObjC では、メソッド名の前の単一のダッシュは、それがインスタンス メソッドであることを意味します。メソッド名の前のプラスは、それがクラス メソッドであることを意味します。しかし、プログラミングの違いは何ですか?
重複の可能性:
Objective-C: クラス vs インスタンス メソッド?
Objective-C - クラスメソッドと静的メソッドの違いは?
ObjC では、メソッド名の前の単一のダッシュは、それがインスタンス メソッドであることを意味します。メソッド名の前のプラスは、それがクラス メソッドであることを意味します。しかし、プログラミングの違いは何ですか?
クラス メソッドとインスタンス メソッドの違いは、インスタンス メソッドには、(通常) 動作するクラスのインスタンスが必要であるということです。インスタンス メソッドを呼び出すメッセージは、クラスのインスタンスに送信する必要があります。
おそらく、クラス メソッドの最も一般的な単一用途はオブジェクト ファクトリです。送信したパラメーターに従って構成されたインスタンスを作成するためにクラスに送信するメッセージ。たとえば、Cocoa では、NSString クラスには stringWithSomethingOrOther: という名前のクラス メソッドがいくつかあり、新しい NSString オブジェクトを作成してユーザーに返します。
一方、NSStringには多くのインスタンス メソッドもあります。つまり、操作する実際のインスタンスがなければ意味のない操作です。一般的に使用されるのは、メッセージの送信先の特定の NSString インスタンスに含まれる文字数を示す長さメソッドです。
こちらもご覧ください。 クラスメソッドとインスタンスメソッドの違いは何ですか?
オブジェクトに対してインスタンス メソッドが呼び出されます。クラス メソッドがクラスで呼び出されます。
たとえば、次の行です。
SomeClass *object = [[SomeClass alloc] init];
ここで、「alloc」が「object」ではなく「SomeClass」で機能することがわかります。
一方
[object callMyFunction];
、「クラス」ではなく「オブジェクト」に作用します。これはインスタンスメソッドです。
これらの 2 つの主な違いは前者です。つまり、宣言されているクラスのインスタンスによってのみ呼び出される前に単一のダッシュが付いています。つまり、そのクラスのインスタンスを 1 つ作成する必要があるということは、そのクラスの 1 つのオブジェクトを意味し、1.
つを使用して呼び出すことができます。インスタンスメソッド
クラスメソッドでは、後者はクラス名を使用して直接呼び出すことができます。クラス メソッドを呼び出すために、オブジェクトは必要ありません。
アップル開発者ドキュメントからこのリンクを参照してください