使用弱与readonly属性?

Med*_*eda 5 cocoa properties objective-c ios

应该使用

@property (nonatomic, weak, readonly)

要么

@property (nonatomic, readonly)

如果它被解除分配,那么弱的优点是可以将实例排除在外,但是它只是意味着弱吗?如果它想要弱行为,是否应该明确声明属性为弱?

Ano*_*dya 5

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


这两者都具有不同的含义,如果它是弱的或强的,则只读不会有任何差别.

@property (nonatomic, weak, readonly)
@property (nonatomic, readonly)
Run Code Online (Sandbox Code Playgroud)

你也可以在这里找到一些参考.

  • 添加到@ AnoopVaidya的回答readonly只是告诉编译器只生成一个getter,而不是一个setter.如果您尝试直接更改该属性,它也会轻松地给您一个很好的警告. (3认同)