NSLog
を実行するカスタムNSLog()
メソッドDNSLog()
を作成しようとしていますが、デバッグ変数がtrueの場合にのみ実行されます。カスタムNSLogメソッド(バリアント)
-(void)DNSLog:(NSString *)formatString, ...
{
if(debug){
va_list args;
va_start(args, formatString);
NSLog([[NSString alloc] initWithFormat:formatString arguments:args]);
va_end(args);
}
}
しかし、私は
DNSLog(@"Hello %d",x);
を使用して、それを呼び出してみたとき、私はコンパイルエラーが表示されます。
Undefined symbols for architecture i386:
"_DZNSLog", referenced from:
-[RestaurantInfoViewController viewDidLoad] in RestaurantInfoViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
私はリファレンスとしてこれを使用している:私はhttp://www.cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html
間違っている?
私は先進的なものに取り掛かる前にCを学んでいると思います。 C関数の構文とObjective-Cの方法を区別することさえできないようです... –
さらに、あなたのコードは文字列の攻撃/エラーのフォーマットに脆弱です。代わりに 'NSLogv(formatString、args);'を使うべきです。 –