1

这是其中一个非常简单的问题,我不敢相信我会在这里问它。但是,我被难住了,所以我开始了:我正在尝试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 对象”!我敢肯定,我错过了一些简单而尴尬的事情,但我完全不知所措。有人可以帮我吗?

4

4 回答 4

1

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

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

于 2013-09-07T21:55:40.927 回答
0

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

#include <Foundation/foundation.h>
于 2013-09-07T22:02:06.993 回答
0

您是否也在断点之后使用变量?否则,当您到达断点时,对象可能已经被释放,因为应用程序不再需要它。然后你会得到一个“不是对象”的消息。

于 2013-09-07T20:24:24.247 回答
0

根据苹果的文档,NSDate 是 NSObject 的子类。

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

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

于 2013-09-07T20:16:35.687 回答