繁体   English   中英

Objective-C属性关键字

[英]Objective-C Property Keywords

好的 - 新手Objective-C问题:

声明属性时,有如下属性:

@property (weak, nonatomic)

我意识到我需要阅读这篇文章才能完全理解它,但我发现的大部分内容都是参考资料,所以链接到一篇好文章,可以解释最佳实践/使用场景(何时使用哪些属性用于基元,参考类型,出口)等等)或者几个例子将不胜感激。

谢谢!

尽管回答我已经找到了这个问题,但是谷歌相同的问题,并且还发现苹果的这篇文章完全解释了整个事情。

希望对正在研究同样事物的人有所帮助,

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html

从我最近的课程(灵感来自Paul Hegarty)

nonatomic - NOT thread safe看到链接Justin在上面的评论中指出

强(或保留) - 保持此对象分配,直到我不再指向它(将其设置为nil)。 编译器也会把它抛出堆(释放它)如果我不再强烈指向(我得到dealloc'd)

weak - 只要有一些东西仍然强烈指向它,就保持这个对象的分配。 IBOutlets通常被声明为弱,因为它们将由视图控制器自动保留。

原始类型不在堆上分配,也不使用强或弱

Atomicity与线程有关,对于新手而言是一个非常高级的主题。 然而,简短的回答是iOS属性总是被声明为非原子的。 这里有一些关于它的更详细的信息

弱/强关键字与ARC的内存管理有关,可以防止所谓的保留周期。 对于新手来说,这也可能是一个棘手的概念,但是高级概述是当两个对象彼此具有强引用时发生保留循环,因此ARC不会破坏任何对象。 这是一种内存泄漏的形式,因为您可能有一个不再使用但仍占用内存的对象。 通过将属性声明为弱,它将确保它不会自动销毁,只要某些东西仍然具有强烈的引用。 例如,假设您有一个包含几个对象的数组。 其中两个对象具有很强的相互引用。 然后,阵列失去其所有者并被销毁。 但是,该数组中指向彼此的两个对象不会被破坏,因为它们具有强引用。 因此,你有两个你无法访问的对象,因为拥有的数组被销毁,但它们仍然占用内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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