Objective-Cでプラスまたはマイナスを使用することの違いは何ですか?
たとえば、ほとんどの場合、コードは で始まりますが-(void)somethingSomethingelse
、場合によっては+(void)somethingSomethingelse
ありがとう!
Objective-Cでプラスまたはマイナスを使用することの違いは何ですか?
たとえば、ほとんどの場合、コードは で始まりますが-(void)somethingSomethingelse
、場合によっては+(void)somethingSomethingelse
ありがとう!
-
関数はインスタンス関数であり、+
関数はクラス (静的) 関数です。
というクラスがPerson
あり、次の関数があるとします。
-(void)doSomething;
+(void)doSomethingElse;
これらの関数を次のように呼び出します。
Person *myPerson = [[Person alloc] init];
[myPerson doSomething];
[Person doSomethingElse];
これは、クラスとインスタンスの概念を理解していることを前提とした構文の説明です。
編集:
追加するだけです:Objective-Cでは、実際にインスタンスでクラス関数を呼び出すことができますが、その効果はクラス自体で呼び出すのと同じです(本質的に同じものにコンパイルされます)。
だからあなたはすることができます
[myPerson doSomethingElse]
通常、これは読みにくく、誤解を招くため、これを行うことはありません。どこかでこのようなコードに出くわしても驚かないように指摘しておきます。
つまり、(+) はクラス メソッドで、(-) はインスタンス メソッドです。
完全な説明については、この回答を参照してください クラスとインスタンスメソッドの違いは何ですか?
それぞれメンバー関数とパブリック関数。
そのような
id object = [[NSObject alloc] init];
+ (id)alloc;
- (id)init;
NSObject はクラスで、id はオブジェクトです
C++ を使用したことがある場合、+ は static と同等です