可変長引数を使って書式文字列を展開する : Objective-C プログラミング

PROGRAM


可変長引数を使って書式文字列を展開する

Objective-C での可変長引数の使い方は 可変長引数でオブジェクトを簡単に受け取る でもお話しましたが、書式文字列と可変長引数を受け取った情報をそのまま NSString の initWithFormat:arguments: メソッドを使って文字列にすることも簡単です。

// 書式を受け取って、textLabel にテキストを表示する例です。

- (void)showLogMessage:(NSString*)format, ...

{

va_list arguments;

va_start(arguments, message);

 

// NSString の initWithFormat:arguments: を使って書式文字列を可変長引数を使って展開しています。

self.logMessageLabel.text = [[NSString alloc] initWithFormat:format arguments:arguments];

 

va_end(arguments);

}

このように、NSString に実装されている initWithFormat:arguments: メソッドを使うことで、C 言語の可変長引数を扱うときにおなじみの va_list を使って書式文字列に値を指定することができます。

これで NSLog のような、ちょっとした状況を任意の書式でログに記録するようなメソッドも簡単に実装できますね。

[ もどる ]