2011-12-22 9 views

答えて

2

NSLogの署名はvoid NSLog (NSString *format, ...);です。

したがって、最初の引数は、むしろリテラル文字列ではなく形式です。 2つ目(およびそれ以降のすべて)の引数は、書式文字列の置換値です。

フォーマット文字列をログに記録する文字列に置き換えないでください。あなたの文字列に%dNSLogのような書式指定子が含まれていると、その文字列を置換しようとしますが、置換文字を入力していない場合はそうしません。

stringを記録する場合は、常にNSLog(@"%@", string)と記録してください。

1

NSLogを使用してNSStringを印刷する正しい方法はNSLog(@"%@", name);です。

+0

なぜですか? NSLog(someString)の何が問題なのですか? – MByD

+0

私のやり方がサンプルではっきりとしています – HelloWorld

+0

@BinyaminSharet 'someString'に'%s'のような特殊文字が含まれている場合、 'NSLog'は別の引数を期待します。その引数がない場合、アプリはクラッシュします。 – v1Axvw

0

全く必要ありませんが、constのNSStringのNSLog見込ん:限りなど%p%d%s%@

NSLog(myString); 
のような特別なフラグが存在しないよう

NSLog(@"%@", name); 

もののを、

も機能します。

関連する問題