Вопрос

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