9

ObjectiveCでメソッドを宣言する方法がおかしいと思いました。

.hファイルでのメソッド宣言:

-(void)methodName:(NSString *)str, int i;

.mファイルでのメソッドの実装:

-(void)methodName:(NSString *)str, int i
{
     NSLog(@"str = %@, int = %d", str, i);
}

このメソッドは次のように呼び出すことができます。

[self methodName:@"stringExample", 99];

そしてそれはうまくいくでしょう。

私の質問は、いつそのような構文を使用すべきかということです。通常の宣言との違いはありますか?

4

2 に答える 2

6

ここで説明するように、これらのパラメータはオプションです

多少まれですが、可変数のパラメーターを使用するメソッドも可能です。追加のパラメーターは、メソッド名の終わりの後にコンマで区切られます。(コロンとは異なり、コンマは名前の一部とは見なされません。)次の例では、架空のmakeGroup:メソッドに1つの必須パラメーター(グループ)とオプションの3つのパラメーターが渡されます。

[receiver makeGroup:group, memberOne, memberTwo, memberThree];

そうです、宣言は通常の宣言とは異なります。オプションのパラメータがとして宣言されているvarargsメソッド以外では、このタイプの宣言の通常の使用法を見つけることができません...

于 2012-08-02T09:07:43.630 に答える
1

次のようなメソッドを宣言する目的は、-(void)methodName:(NSString *)str yourInt:( int) i{...}読みやすくすることです。llvm 4.0が文字列、配列、辞書を宣言した後、他のC言語と同じように処理できます。たとえば、以下の両方の宣言が当てはまります。

//old style
array = [nsarray arraywithobjects:a, b, c, nil];
dict = [nsdictionary dictionarywithobjects:@[o1, o2, o3]
forkeys:@[k1, k2, k3]];
number = [nsnumber numberwithchar:'x'];
number = [nsnumber numberwithint:12345];
//new style
array = @[ a, b, c ];
dict = @{ k1 : o1, k2 : o2, k3 : o3 };
number = @'x';
number = @12345;

トルコのフォーラムからのリソースはここにあります

于 2012-08-02T09:00:01.857 に答える