Я пишу игру, включающую класс Quest
, который имеет свойство completionDate
типа NSDate *
, в котором записывается дата и время, когда игрок завершил квест. Это объявление (в Quest.h):
@property (nonatomic) NSDate *completionDate;
Я подумал, что было бы разумно, в случае, когда игрок еще не завершил квест, присвоить свойству квеста completionDate
значениеNULL
чтобы указать это. Однако, когда я делаю:
quest.completionDate = NULL;
XCode (11.1) выдает предупреждение в этой строке кода: Null passed to a callee that requires a non-null argument
.
Несмотря на предупреждение, мой код работает должным образом:Выполнение проверки, подобной следующей, чтобы определить, завершен ли квест, кажется, работает нормально:
if (quest.completionDate == NULL) { ... }
Исследуя это, я обнаружил похожие вопросы, такие как Xcode 7, Obj-C, "Null". передается вызываемому объекту, который требует ненулевой аргумент ", с ответами, предлагающими просто использовать метод init
для инициализации объекта в состояние по умолчанию. Однако в случае NSDate init
инициализирует дату как «сейчас» (текущую дату / время), так что это не сработает для того, что я пытаюсь сделать.
Мой вопрос: есть ли причина не назначать NULL
для NSDate *
?