3

重複の可能性:
Objective-Cで可変引数メソッドを作成する方法ObjectiveCで
可変数のメソッドパラメーター-例が必要

以下は、可変個引数を持つメソッドの例です。

- (void)numberOfParameters:group,... {
    NSLog(@"%@",group);
}

上記の方法では、可変個引数の最初の引数にアクセスすることを知っています。他の人にもアクセスするのを手伝ってくれませんか。

私はObjC.pdf を読んでいて、ページ番号35を読んでいます。行番号は4です。

4

2 に答える 2

6

これとほぼ同じ質問を参照してください

-(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);
}

最後にnilパラメーターを指定して次のように呼び出します。

[object yourMethods:arg1,arg2,arg3,nil];// object can be self
于 2012-10-09T05:42:34.113 に答える
3

1つ:それらは(私が知る限り)「グループパラメータ」と呼ばれるのではなく、可変個引数と呼ばれます。

2:C標準ライブラリヘッダーは、この目的のためのデータ型とマクロを提供します(そのため、私は通常、史上最高のiPhoneアプリ(TM)stdarg.hを作成する前に、まずプレーンな古いANSI Cをマスターすることをお勧めします...)

#include <stdarg.h>

- (void)numberOfParameters:(int)num, ...
{
    int i;
    va_list args;
    va_start(args, num);

    for (i = 0; i < num; i++) {
        SomeType param = va_arg(args, SomeType);
        // do something with `param'
    }

    va_end(args);
}

これは、このトピックに関するかなり良い説明です。

于 2012-10-09T05:39:48.627 に答える