gpt4 book ai didi

iphone - ios 5 中何时使用强引用和弱引用

转载 作者:行者123 更新时间:2023-12-03 19:28:34 25 4
gpt4 key购买 nike

Possible Duplicate:
Weak and strong property setter attributes in Objective-C

我是 iPhone 开发新手。任何人都可以告诉我何时使用强引用,何时使用弱引用,以及原子引用和非原子引用之间的区别是什么。我浏览了很多链接,但仍然不清楚。 我还想知道ios5之前使用的retain、copy和assign之间的区别。

感谢任何帮助..

谢谢,拉杰

最佳答案

设计数据时,您需要了解所有权的概念。数据拥有向下。所有权永远无法恢复到您的数据层次结构。如果A有一个指向B的指针,B有一个指向C的指针,那么C拥有A,你就有了一个循环引用图,这会导致内存泄漏,因为A间接引用C并且C引用A。释放A并且它不会得到被删除是因为 C 仍然有一个引用,并且除非 A 这样做,否则它不会被删除 - 陷阱 22。

为了避免这种情况,您可以使用强指针“向下”指向数据,并使用弱指针来指向任何反向引用(例如父指针)。

如果属性是原子的,它会生成一个允许从多个线程设置它的 setter 。您不能出现竞争条件,即一个线程与另一个线程同时更改属性。非原子属性没有线程锁定系统。

最后,当您通过在对象上调用 [myObject keep] 将保留属性分配给对象时,保留属性会增加对象的引用计数。 Copy 调用 [myObject copy],因此该属性不引用原始属性,但复制和分配只是直接分配,没有引用计数调整。

关于iphone - ios 5 中何时使用强引用和弱引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11580993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com