【问题标题】:Is it safe to assign NULL to an NSDate*?将 NULL 分配给 NSDate* 是否安全?
【发布时间】: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


    【解决方案1】:

    将可为空的属性属性添加到您的完成日期。

    @property (nonatomic, nullable) NSDate *completionDate;
    

    要了解有关声明可空类型的更多信息,请参阅这篇 Apple 博文 Nullability and Objective-C

    【讨论】:

      猜你喜欢
      • 2012-06-02
      • 2019-09-09
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 2010-10-24
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多