質問
objective-cはかなり新しく、次のコードブロックの警告メッセージを理解するのに苦労しています:
void PrintPathInfo() {
NSString *path = @"~";
NSString *message = @"My home folder is: ";
NSLog([message stringByAppendingString: [path stringByExpandingTildeInPath]]);
}
これは、最後の行(NSLogの呼び出し)で警告メッセージを受け取ります:
warning: format not a string literal and no format arguments
誰かが明確にできますか?これは私が心配するべき警告メッセージですか?
ありがとう。
解決
コードは正常に機能するはずですが、渡された文字列に「%」フォーマット文字が含まれていると、NSLogを混乱させる可能性があります。たとえば、これをコードにスワップしてみてください:
NSString *message = @"My home %folder is: ";
NSLogはその '%f'を誤った方法で解釈します。
次のように、書式設定と文字列を渡す文字列リテラルを使用して、警告(および危険)を回避できます。
NSLog(@"%@%@", message, [path stringByExpandingTildeInPath]);
このリンクも確認できます:
http://www.cocoabuilder.com/archive / message / cocoa / 2009/8/29/243819
がんばって!
他のヒント
nslogに出力を書き込む場合は、次のようなものが必要です。
NSLog(@"My home folder is %@",[path stringByExpandingTildeInPath]);
所属していません StackOverflow