我是初学者(编程时)学习Objective-C。 Xcode不会让我从NSDate对象分配返回值;我对此感到困惑。为什么我不能将timeIntervalSince1970返回值存储到指针?
NSDate *now = [NSDate date];
long seconds = [now timeIntervalSince1970];
如果我用一个指针来保存秒:
long *seconds = [now timeIntervalSince1970];
我看到的错误:
Initializing 'long *' with an expression of incompatible type 'NSTimeInterval' (aka 'double')
为什么我不能说“给我的now.timeIntervalSince1970
返回值并坚持在这个地址“?
另一个问题是,为什么我不能初始化一个对象并在不需要指针的情况下使用它?这不起作用。
NSDate dateObject = [NSDate date];
我知道我的问题可能有一个非常简单的答案,但书中并没有解释任何的“为什么它以这种方式工作”的问题。
感谢。首先我听说过'原始'类型和'对象'类型。我会冒险猜测对象的接收消息,而原始类型不接受?所以我们使用指针来存储对象的地址? – 2014-10-31 11:41:44
我想我很困惑,因为这本书是以C开头的。现在看来,Objective-C的规则正在发生变化,没有说明为什么。 – 2014-10-31 11:44:05
@JumbalayaWanton这是一个很大的主题,你必须研究,但是所有的对象都是由基元构建的,而且这些对象必须动态分配(类似于我所展示的'malloc()'代码),并且对象接收消息。 – trojanfoe 2014-10-31 11:44:48