Objective-C Предупреждение - PullRequest
       26

Objective-C Предупреждение

4 голосов
/ 14 сентября 2009

Я довольно новичок в 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

Может кто-нибудь уточнить, пожалуйста? Это предупреждающее сообщение, о котором я должен беспокоиться?

Спасибо.

Ответы [ 2 ]

9 голосов
/ 14 сентября 2009

Ваш код должен работать просто отлично, но он может работать неправильно, если в переданной строке есть какие-либо символы форматирования '%' - это может запутать NSLog. Например, попробуйте добавить это в свой код:

NSString *message = @"My home %folder is: ";

NSLog неправильно интерпретирует этот "% f".

Вы можете избежать предупреждения (и опасности), используя строковый литерал с форматированием и передачей в ваших строках, например:

NSLog(@"%@%@", message, [path stringByExpandingTildeInPath]);

Вы также можете проверить эту ссылку:

http://www.cocoabuilder.com/archive/message/cocoa/2009/8/29/243819

Удачи!

2 голосов
/ 14 сентября 2009

Если вы хотите записать вывод в nslog, вам нужно что-то вроде этого:

NSLog(@"My home folder is %@",[path stringByExpandingTildeInPath]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...