NULL против нуля в Objective-C

В observeValueForKeyPath:ofObject:change:context: – почему документы используют NULL вместо nil если не указывать указатель контекста?

nil следует использовать вместо id , что мы, программисты Java и C ++, будем рассматривать как указатель на объект. Используйте NULL для указателей без объектов.

Посмотрите на объявление этого метода:

 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 

Контекст – это void * (то есть указатель C-стиля), поэтому вы обязательно должны использовать NULL (который иногда объявляется как (void *)0 ), а не nil (который имеет id типа).

Они технически одинаковы (0), но ноль обычно используется для объектного объекта Objective-C, а NULL используется для указателей c-стиля (void *).

Они технически одинаковы и отличаются только стилем:

  • Стиль Objective-C говорит, что nil – это то, что нужно использовать для типа id (и указателей на объекты).
  • Стиль C говорит, что NULL – это то, что вы используете для void * .
  • Стиль C ++ обычно говорит, что вы должны просто использовать 0 .

Обычно я использую вариант, соответствующий языку, в котором объявлен тип.

NULL – это C equivalent nil , указатель на ничего;

где nil is zero typed as id ,

NULL is zero typed as void* .

Одним из важных моментов вы не можете отправить сообщение в NULL. Поэтому во многих местах предпочтительно использовать ноль в объективе-С.

Они почти одно и то же, кроме,

nil используется в стиле Objective-C. где NULL – для указателей типа C и является typdef’ed (void *) .

  • Как преобразовать значения NSString в шестнадцатеричные значения
  • Чтение образцов с помощью AVAssetReader
  • iOS8 - ограничения двусмысленно указывают на высоту нуля
  • Проблема автосохранения кадра UICollectionViewCell contentView в ячейке прототипа Storyboard (Xcode 6, iOS 8 SDK) происходит при запуске только на iOS 7
  • Как добавить 1 день к NSDate?
  • Как правильно представить popover из UITableViewCell с помощью UIPopoverArrowDirectionRight или UIPopoverArrowDirectionLeft
  • Убедитесь, что вход в UITextField только числовой
  • Как отсортировать NSMutableArray с помощью sortedArrayUsingDescriptors?
  • Измените NSEvent для отправки другого ключа, кроме того, который был нажат
  • Что такое NSCFDictionary?
  • MKAnnotation, простой пример
  • Interesting Posts

    Как получить доступ к VPN-серверу с частным IP-адресом?

    Что означает целое число, которое имеет нуль перед ним, и как я могу его распечатать?

    COMET (серверный клик для клиента) на iPhone

    Несколько меню выбора в пакетном файле?

    Как работает распознавание USB-устройств?

    Аккумулятор включен или выключен во время работы ноутбука на электричестве?

    Запуск нескольких полноэкранных экземпляров Chrome на нескольких мониторах из (пакетного) сценария

    Начальный экран Windows 8 – Перемещение групп

    Какой браузер наиболее безопасен? (Исследование и практически основано)

    MD5 хеширование в Android

    Безопасность транспорта приложений и IP-адреса в iOS9

    Установка максимальной ширины в ViewGroup

    Насколько хороша защита пароля Word?

    Использование ffmpeg для копирования метаданных из одного файла в другой

    Преобразование UTF-8 в ISO-8859-1 в Java – как сохранить его как один байт

    Давайте будем гением компьютера.