[英]iOS5 @property changes
在iOS 5中,不再支持“保留”和“发布”。 相反,“强”和“弱”是新的方式。
iOS 4代码:
@property(nonatomic, retain)
@property(nonatomic, assign)
iOS 5代码:
???
???
“在iOS 5中,不再支持retain release。” 它们只是在使用ARC时。
使用ARC时, -[<NSObject> retain]
是无操作。
对于属性,如果使用ARC,则可以使用strong
,但这不是必需的(如果您愿意,也可以使用retain
)。 strong
和retain
是相同的:
@property(nonatomic, strong)
@property(nonatomic, assign)
只要确保你是一致的(不要同时使用strong
和retain
在同一个项目中)。
它们不完全相同,但基本上retain := strong
和assign := weak
我建议看一下ARC发行说明
nonatomic
属性声明该对象不是线程安全的,这意味着如果一个不同的线程试图访问该对象而不是坏事可能发生,但这比原子属性快得多。
strong
与ARC一起使用,它基本上可以帮助你,不必担心对象的保留计数。 完成后,ARC会自动为您释放它。使用关键字strong
表示您拥有该对象。
weak
所有权意味着你不拥有它,它只是跟踪对象,直到它被分配的对象停留,一旦释放第二个对象,它就失去了价值。 例如。 obj.a=objectB;
使用和具有弱属性,其值只有在objectB保留在内存中才有效。
copy
属性在这里解释得很好https://stackoverflow.com/a/5002646/919545
strong,weak,retain,copy,assign
是互斥的,所以你不能在一个对象上使用它们...阅读http://developer.apple.com/library/mac/#documentation的“声明的属性”部分/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW1
希望这有助于你...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.