class method
aと anの違いはinstance method
、インスタンス メソッドには、(一般に) 動作するクラスのインスタンスが必要であるということです。インスタンス メソッドを呼び出すメッセージは、クラスのインスタンスに送信する必要があります。
For example
Cocoa の NSString クラスには、stringWithSomethingOrOther という名前のクラス メソッドがいくつかあります。これにより、新しい NSString オブジェクトが作成され、返されます。
一方、NSStringには多くのインスタンス メソッドもあります。つまり、操作する実際のインスタンスがなければ意味のない操作です。一般的に使用されるのは、メッセージが送信される特定の NSString インスタンスに含まれる文字数を示す長さメソッドです。
別の例を考えてみましょう -
@interface DeepsClass : NSObject
+ (void)myClassMethod;
- (void)myInstanceMethod;
@end
次のように使用できるようになりました: -
[DeepsClass myClassMethod];
DeepsClass *object = [[DeepsClass alloc] init];
[object myInstanceMethod];
Performance difference
パフォーマンスはalmost the same
、クラス メソッドとインスタンス メソッドにあります。クラス メソッドは実行時に他のメソッド (インスタンス メソッドなど) と同様に処理されます。クラスは実行時にロードされる場合がありますが、メソッド自体はインスタンス メソッドと同じ C 関数であり、これらの関数への POINTERS はキャッシュされます。インスタンスメソッド。