Frage
Ich bin ziemlich neu in Objective-C und Mühe habe für den folgenden Codeblock der Warnmeldung zu verstehen:
void PrintPathInfo() {
NSString *path = @"~";
NSString *message = @"My home folder is: ";
NSLog([message stringByAppendingString: [path stringByExpandingTildeInPath]]);
}
Dies ist die Warnmeldung mich für die letzte Zeile immer bin (Aufruf zum NSLog):
warning: format not a string literal and no format arguments
Kann jemand bitte erklären? Ist das eine Warnmeldung ich sein sollte besorgt?
Danke.
Lösung
Ihr Code sollte gut funktionieren, aber konnte sich schlecht benehmen, wenn es eine ‚%‘ sind Formatierungszeichen in der übergebenen Zeichenkette - das NSLog verwirren könnte. Zum Beispiel, versuchen Sie dies in Ihren Code Swapping:
NSString *message = @"My home %folder is: ";
NSLog interpretiert, dass '% f' in einem schlechten Weg.
Sie können die Warnung vermeiden (und die Gefahr), durch eine Stringliteral mit Formatierung verwenden und in den Saiten, wie folgt übergeben:
NSLog(@"%@%@", message, [path stringByExpandingTildeInPath]);
Sie können auch diese Verbindung überprüfen:
http://www.cocoabuilder.com/archive / message / Kakao / 2009/8/29/243819
Viel Glück!
Andere Tipps
Wenn Sie möchten, um die Ausgabe zu schreiben, um Sie so etwas wie dieses müssen NSLog:
NSLog(@"My home folder is %@",[path stringByExpandingTildeInPath]);