【发布时间】:2020-02-12 17:51:17
【问题描述】:
我正在编写一个包含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 passed to a callee that requires a non-null argument" 的问题,答案建议仅使用init 方法将对象初始化为默认状态。但是,在 NSDate 的情况下,init 将日期初始化为“现在”(当前日期/时间),因此这不适用于我正在尝试做的事情。
我的问题:有什么理由不将NULL 分配给NSDate *?
【问题讨论】:
标签: objective-c xcode nsdate