NSDate 不是 Objective-C 对象



这是一个非常简单的问题,我简直不敢相信我在这里问这个问题。 但是,我很困惑,所以我来了:我正在尝试为未来的某个时间创建一个NSDate。 我认为这很容易,但是当我尝试时:

NSDate *destinationDate = [NSDate dateWithTimeIntervalSinceNow:30];

下一行的断点表示destinationDate"不是 Objective-C 对象"。 我尝试了一百万个不同的版本,从这个:

NSDate *destinationDate = [[NSDate alloc] init];
destinationDate = [NSDate dateWithTimeIntervalSinceNow:30];

对此:

NSDate *destinationDate = [NSDate date];

对此(此处建议):

NSDate *destinationDate = [[NSDate date] copy];

什么都没用! 它们都是"不是Objective-C对象"! 我敢肯定,我错过了简单而尴尬的事情,但我完全不知所措。 有人可以帮助我吗?

好吧,你可以在这里的文档中看到NSDate确实是一个NSObject,它当然是一个Objective-C对象。

这可能是调试器面板的错误,不幸的是它经常发生。当这种奇怪的事情发生时,请始终使用控制台,当处于断点时,使用po myVariable来检查变量的内容,它更可靠。

根据Apple的文档,NSDate是NSObject的一个子类。

您列出的方法(alloc/init 和类方法 dateWithTimeIntervalSinceNow:)是有效用途。

在不知道您的实际问题是什么的情况下,很难说更多,但是如果您不使用 ARC,您可以检查是否正确保留/释放。

您是否也在断点使用变量?否则,在遇到断点时,对象可能已释放,因为应用不再需要它。然后,您将收到"不是对象"消息。

基金会不包括在项目中吗?

#include <Foundation/foundation.h>