我的界面中有这个:
@property (nonatomic, weak) NSTimeInterval *timeStamp;
我的逻辑告诉我,我需要一个时间戳对象,这个对象只会在其实例化的上下文中使用,所以“弱”对我来说似乎是合乎逻辑的 - 但是XCode告诉我“具有'weak'属性的属性必须是对象类型“...如果我这样做:
@property (nonatomic) NSTimeInterval *timeStamp;
然后错误就消失了,但我不确定我明白为什么......
答案 0 :(得分:12)
问题是NSTimeInterval
是一个值类型 - 它实际上是double
的别名(检查NSDate.h的typedef)。 weak
属性仅适用于具有保留计数的对象(即来自NSObject
或NSProxy
的任何内容)。
因此,存储指向NSTimeInterval
的指针可能是您的错误。您很可能永远不会收到指向NSTimeInterval
的指针,除非您希望将给定地址写为函数的输出(在这种情况下可能是回调)。也就是说,我不知道NSTimeInterval *
作为返回类型的任何函数,也不知道任何将函数传递给回调的函数。