Понимание синтаксиса NSLog
(Я начинаю новичок cocoa). Мне интересно, почему мы должны делать:
NSLog(@"this is the variable value: %d",variable);
а не что-то вроде этого:
[NSLog outputThis:@"this is the variable value: %d" param:variable];
Ответы
Ответ 1
Я согласен, что это довольно запутанно, когда вы начинаете. Основная причина заключается в том, что метод NSLog, как и многие другие в Core Foundation, является API на основе C, а не API Objective-C. Функции C-стиля выглядят как myFunction (myParameter1, myParameter2).
Все материалы GUI, которые вы, вероятно, использовали для [UIView presentModalViewController:] и т.д., основаны на API Objective-C с квадратными скобками, которые вы видели для функций (называемых селекторами в Obj-C). Язык Objective-C находится поверх C, поэтому вы найдете оба стиля в большинстве приложений.
Ответ 2
Как я понимаю, NSLog не является функцией Objective C, а функцией C, встроенной в основу Cocoa. Поэтому он соответствует основным C-функциям с вариационными аргументами.
Ответ 3
NSLog
может показаться классом, но это не так.
NSLog
- это функция FoundationKit
для печати операторов отладки консоль. Он определен в NSObjCRuntime.h
:
void NSLog(NSString format, ...);
Здесь есть много информации: http://cocoadev.com/wiki/NSLog
EDIT: Как отметил @fyngyrz, страница мертва. Итак вот версия страницы с обратным каналом с 2012 года