可変引数を取るメソッドの記述方法

Cocoaに関するヌマタメモ
2008年11月29日 23:39

宣言部分は、こんな感じ。

- (void)myPrint:(NSString *)firstStr, ...;

実装部分はこんな感じで、C言語の方法とよく似たやり方である。

- (void)myPrint:(NSString *)firstStr, ... {
    va_list ap;
    NSString *aStr;
    
    if (firstStr) {
        NSLog(@"%@", firstStr);
        va_start(ap, firstStr);
        aStr = va_arg(ap, NSString *);
        while (aStr) {
            NSLog(@"%@", aStr);
            aStr = va_arg(ap, NSString *);
        }
        va_end(ap);
    }
}

最初の引数は va_arg でリターンされないことに注意(printf()ライクな書式+引数の場合に便利だからだろうか)。終了条件は基本的に nil でもらうように実装するのが分かりやすいハズ。

参考資料

コメントを書く


トラックバックはありません。

トラックバックURL: http://numata.designed.jp/mt-tb.cgi/87