“具有'弱'属性的属性必须是对象类型”真正意味着什么?

时间:2012-08-17 23:26:28

标签: objective-c ios

我的界面中有这个:

@property (nonatomic, weak) NSTimeInterval *timeStamp;

我的逻辑告诉我,我需要一个时间戳对象,这个对象只会在其实例化的上下文中使用,所以“弱”对我来说似乎是合乎逻辑的 - 但是XCode告诉我“具有'weak'属性的属性必须是对象类型“...如果我这样做:

@property (nonatomic) NSTimeInterval *timeStamp;

然后错误就消失了,但我不确定我明白为什么......

1 个答案:

答案 0 :(得分:12)

问题是NSTimeInterval是一个值类型 - 它实际上是double的别名(检查NSDate.h的typedef)。 weak属性仅适用于具有保留计数的对象(即来自NSObjectNSProxy的任何内容)。

因此,存储指向NSTimeInterval的指针可能是您的错误。您很可能永远不会收到指向NSTimeInterval的指针,除非您希望将给定地址写为函数的输出(在这种情况下可能是回调)。也就是说,我不知道NSTimeInterval *作为返回类型的任何函数,也不知道任何将函数传递给回调的函数。