Понимание синтаксиса 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 года