5

应该使用

@property (nonatomic, weak, readonly)

或者

@property (nonatomic, readonly)?

Weak 的优势在于,如果实例被释放,则将其归零,但 readonly 是否意味着弱?如果需要弱行为,是否应该明确声明属性为弱?

4

2 回答 2

5

如果你想保留一个指向你不拥有的对象的指针,但希望它只在它存在时才有效,那么你想使用弱指针,因为当它被所有者释放时,你的指针会自动设置为 nil 并且不会指向不应该指向的内存。


这两个都有不同的含义,如果它是弱或强, readonly 没有任何区别。

@property (nonatomic, weak, readonly)
@property (nonatomic, readonly)

您还可以在此处找到一些参考

于 2013-03-06T18:30:18.027 回答
2

弱或强与只读或读写无关。无暗示对方。

牢固的关系需要所有权。弱者不会,但它会收到在删除相关对象时被取消的服务。

Readonly 禁止设置器(afaik)。不能从其类之外更改该属性。读写(如果没有说明,这是默认设置)允许更改属性。

基本上就是这样。那是两个不相关的设置。它们适用于所有可以想到的组合。

于 2013-03-06T18:39:24.840 回答