Будет ли указатель на указатель на ноль совпадать с NULL? - PullRequest
4 голосов
/ 13 июня 2010

Пример:

Метод проверки содержит эту проверку, чтобы увидеть, должен ли быть создан объект NSError:

- (BOOL)validateCompanyName:(NSString *)newName error:(NSError **)outError {
    if (outError != NULL) {
        // do it...

Теперь я передаю объект NSError, например:

NSError *error = nil;
BOOL ok = [self validateCompanyName:@"Apple" error:&error];

Я не уверен, что это соответствует проверке на NULL. Я думаю, что это не NULL, так как я считаю, что NULL не ноль. Может быть, кто-то может это прояснить?

1 Ответ

6 голосов
/ 13 июня 2010

nil (все строчные буквы) - это нулевой указатель на объект Objective-C.

Nil (с заглавной буквы) - нулевой указатель на класс Objective-C.

NULL (все заглавные буквы) - нулевой указатель на что-либо еще.

Все же они все компилируются в 0, поэтому (nil == Nil == NULL == 0) (спасибо Дейву).

...