5

Objective C Programming Guide (「Object Messaging」セクションの下) から、

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

[レシーバー makeGroup:group, memberOne, memberTwo, memberThree];

そのようなメソッドを作成しようとしましたが、エラーが表示されます

"期待される ';' メソッドプロトタイプの後」

インターフェイスファイル(.hファイル)で以下の関数を宣言しようとすると。

- (void) printMyClass: (int) x, (int) y, (int) z;

次のようなメソッドを作成するサンプル例を誰でも挙げることができますかmakeGroup

ありがとうございました

4

2 に答える 2

16

あなたはこのリンクを見ることができます。

ヘッダーファイルで、最後に3つのドットを付けてメソッドを定義します

-(void)yourMethods:(id)string1,...;

そして、実装ファイルにメソッド本体を記述します

-(void)yourMethods:(id)string1, ...{

    NSMutableArray *arguments=[[NSMutableArray alloc]initWithArray:nil];
    id eachObject;
    va_list argumentList;
    if (string1) 
    {
        [arguments addObject: string1];
        va_start(argumentList, string1); 
        while ((eachObject = va_arg(argumentList, id)))    
        {
             [arguments addObject: eachObject];
        }
        va_end(argumentList);        
     }
    NSLog(@"%@",arguments);
}

次に、メソッドを呼び出します

[self yourMethods:@"ab",@"cd",@"ef",@"gf",nil];

注:最後にnilを付けることを忘れないでください

于 2012-09-17T07:32:14.023 に答える
0

可変数の引数を持つメソッドを宣言するための構文は次のようになります。

- (void) printMyClass: (int) x, ...;

va_arg1つの引数は常に必要な最小値であり、他の引数は関数グループを介してアクセスできます。正確な詳細については、このチュートリアルを参照してください。

于 2012-09-17T07:24:02.080 に答える