NSDate不是Objective-C对象?

时间:2013-09-07 20:07:43

标签: ios nsdate

这是一个非常简单的问题之一,我无法相信我在这里问它。但是,我很难过,所以我走了:我想在将来的某个时间创建一个NSDate。我觉得这很容易,但是当我尝试时:

NSDate *destinationDate = [NSDate dateWithTimeIntervalSinceNow:30];

下一行的断点表明destinationDate“不是Objective-C对象”。我尝试了一百万种不同的版本:

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

到此:

NSDate *destinationDate = [NSDate date];

到此(建议here):

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

没有任何作用!他们都是“不是Objective-C对象”!我确信这是一件简单而令人尴尬的事情,我很遗憾,但我完全不知所措。有人可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

嗯,您可以在文档here中看到NSDate确实是一个NSObject,其中的一个是Objective-C对象。

这可能是调试器面板的一个错误,不幸的是它发生了很多。当发生这种奇怪的事情时,总是使用控制台,在断点处使用po myVariable来检查变量的内容,它更可靠。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

#include <Foundation/foundation.h>