Objective-C: NSLog печатает (ноль) для переменной, назначенной nil? - PullRequest
1 голос
/ 06 января 2010

Мне любопытно, почему переменная, явно присвоенная nil, печатается как (null) с NSLog:

NSString *myVar = nil;
NSLog(@"%@", myVar);

# RESULT: ' (null) '

Это, конечно, довольно запутанно, учитывая все виды «небытия», которые нужно выяснить в Objective-C, и заставило меня попробовать протестировать различные синтаксисы IF NULL.

Ответы [ 4 ]

9 голосов
/ 06 января 2010

Различные виды "небытия" подытожены:

nil  //Null pointer to an Objective-C object
Nil  //Null pointer to an Objective-C class
NULL  //Null pointer

Все вышеперечисленное определяется как ((void *)0).

4 голосов
/ 06 января 2010

(null) является строковым представлением 'nil' для целей печати ... ничего не связанного с проверками IF NULL. myVar по-прежнему nil

2 голосов
/ 06 января 2010

Это то, что делает формат %@, он преобразует nil в NSNull.myVar само по себе все еще nil.Вы все еще можете использовать if (myVar) для тестирования.

2 голосов
/ 06 января 2010

Это просто реализация метода NSLog IMHO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...