22

重複の可能性:
Objective C でメソッドの横にあるプラス記号とマイナス記号は何を意味しますか?

Objective-Cでプラスまたはマイナスを使用することの違いは何ですか?

たとえば、ほとんどの場合、コードは で始まりますが-(void)somethingSomethingelse、場合によっては+(void)somethingSomethingelse

ありがとう!

4

3 に答える 3

34

-関数はインスタンス関数であり、+関数はクラス (静的) 関数です。

というクラスがPersonあり、次の関数があるとします。

-(void)doSomething;

+(void)doSomethingElse;

これらの関数を次のように呼び出します。

Person *myPerson = [[Person alloc] init];

[myPerson doSomething];

[Person doSomethingElse];

これは、クラスとインスタンスの概念を理解していることを前提とした構文の説明です。

編集:

追加するだけです:Objective-Cでは、実際にインスタンスでクラス関数を呼び出すことができますが、その効果はクラス自体で呼び出すのと同じです(本質的に同じものにコンパイルされます)。

だからあなたはすることができます

[myPerson doSomethingElse]

通常、これは読みにくく、誤解を招くため、これを行うことはありません。どこかでこのようなコードに出くわしても驚かないように指摘しておきます。

于 2012-06-08T18:23:57.860 に答える
30

つまり、(+) はクラス メソッドで、(-) はインスタンス メソッドです。

完全な説明については、この回答を参照してください クラスとインスタンスメソッドの違いは何ですか?

于 2012-06-08T18:23:09.900 に答える
6

それぞれメンバー関数とパブリック関数。

そのような

id object = [[NSObject alloc] init];
+ (id)alloc;
- (id)init;

NSObject はクラスで、id はオブジェクトです

C++ を使用したことがある場合、+ は static と同等です

于 2012-06-08T18:23:35.603 に答える