繁体   English   中英

iOS5 @property发生了变化

[英]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 )。 strongretain是相同的:

@property(nonatomic, strong)
@property(nonatomic, assign)

只要确保你是一致的(不要同时使用strongretain在同一个项目中)。

它们不完全相同,但基本上retain := strongassign := 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM