使用弱与readonly属性?

时间:2013-03-06 18:24:55

标签: ios objective-c cocoa properties

应该使用

@property (nonatomic, weak, readonly)

@property (nonatomic, readonly)

Weak具有以下优势:如果实例被解除分配,则会将实例排除在外,但只是意味着弱吗?如果一个属性需要弱行为,那么是否应该明确声明属性为弱?

2 个答案:

答案 0 :(得分:5)

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


这两者都具有不同的含义,如果弱或强,只读也不会有任何差异。

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

您还可以找到一些reference here

答案 1 :(得分:2)

弱或强与readonly或readwrite无关。没有意味着另一个。

强大的关系取得所有权。弱者不会,但在删除相关对象时会收到无效的服务。

Readonly抑制一个setter(afaik)。该物业不能在同级以外更改。 Readwrite(如果没有声明则是默认值)允许更改属性。

基本上就是这样。这是两个彼此无关的设置。他们工作在所有可想象的comibnations。