質問

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]);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top