将 NULL 分配给 NSDate* 是否安全?
Is it safe to assign NULL to an NSDate*?
我正在编写一个包含 Quest
class 的游戏,其中有一个 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) { ... }
对此进行研究,我发现了类似的问题,例如 , with answers suggesting just using the init
method to initialize an object to a default state. However, in the case of NSDate, init
将日期初始化为 "now"(当前的 date/time),因此这对我正在尝试的内容不起作用做。
我的问题:是否有任何理由不将 NULL
分配给 NSDate *
?
将可为 null 的 属性 属性添加到您的 completionDate。
@property (nonatomic, nullable) NSDate *completionDate;
要了解有关声明可空类型的更多信息,请参阅此 Apple 博客 post Nullability and Objective-C。
我正在编写一个包含 Quest
class 的游戏,其中有一个 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) { ... }
对此进行研究,我发现了类似的问题,例如 init
method to initialize an object to a default state. However, in the case of NSDate, init
将日期初始化为 "now"(当前的 date/time),因此这对我正在尝试的内容不起作用做。
我的问题:是否有任何理由不将 NULL
分配给 NSDate *
?
将可为 null 的 属性 属性添加到您的 completionDate。
@property (nonatomic, nullable) NSDate *completionDate;
要了解有关声明可空类型的更多信息,请参阅此 Apple 博客 post Nullability and Objective-C。