"property with 'weak' attribute must be of object type"到底是什么意思?



我的界面中有这个:

@property (nonatomic, weak) NSTimeInterval *timeStamp;

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

@property (nonatomic) NSTimeInterval *timeStamp;

然后错误消失了,但我不确定我是否理解为什么......

问题是NSTimeInterval是一个值类型 - 它是double的别名,本质上(检查 NSDate.h 以获取 typedef)。weak 属性仅适用于具有保留计数的对象(即,从 NSObjectNSProxy 衍生的任何对象)。

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

最新更新