Q
争议与目标C
2
A
回答
3
一个对象只保留在内存中,而至少有一个对它的强(默认)引用。如果您只使用弱引用,则该对象将立即解除分配。
简单地说,“弱”意味着:这个对象属于别人,我只能访问它,我不介意它是否消失。
2
Objective-C中的Weak引用让我们避免保留周期,为什么不一直使用它们?
因为只要没有强引用,对象就会被释放。
更重要的是,为防止对象的重新分配,通常需要强大的引用。例如,视图控制器最终对其视图负责 - 让控制器的视图突然消失是没有多大意义的。所以UIViewController的view
属性很强大。
保留周期发生在两个对象各自具有强引用时。只要另一个对象保持强引用,任何对象都不能被释放。如果你意识到这种情况,这并不是一个问题,因为你可以通过消除任一参考来打破保留周期。然而,很容易让而不是意识到这个循环,或忘记处理它,然后你有两个对象在超出其使用寿命的时间内保持在内存中。使这些引用中的一个弱化可以消除这个问题,但这也意味着被引用的对象可能会被释放,并且引用可能在任何时候都成为零。实际上,这通常不是问题。
相关问题
- 1. 目标C与目标C++
- 2. 目标C中的协议
- 3. 目标C:模块与选择器与协议
- 4. DatabaseMetaData.ownDeletesAreVisible VS DatabaseMetaData.deletesAreDetected争议
- 5. 请与目标C
- 6. 潜在简单的目标C错误与协议
- 7. 目标C,大约在协议
- 8. 目标c继承/协议混淆:UITableViewController
- 9. 建议用于使用目标C
- 10. 代表和协议目标C
- 11. FindBugs有争议的描述
- 12. NSManagedObject与活性目标C
- 13. 不能与目标C
- 14. 目标C:与其他类
- 15. 问题与目标C hash256
- 16. Ant不会启动战争目标
- 17. 完成目标的竞争条件
- 18. 无竞争目录散步(C++)
- 19. libGDX html5项目不能与swarmconnect竞争
- 20. Swift项目与目标C包装OpenCV
- 21. ANTLR3 C目标与C++异常
- 22. c。与SqlDataReaders和SqlDataAdapters#线程争
- 23. MVC C#项目会议
- 24. Forth如何实现字典? (争议)
- 25. ArrayAdapter:ListView更改位置的getView争议值
- 26. 如何整合paypal IPN争议notifacation
- 27. 无争议装饰装修工?
- 28. Python中的位置争议Docopt
- 29. 目标C++调用目标C
- 30. WKWatchConnectivityRefreshBackgroundTask与WCSessionDelegate竞争
如果一切都很微弱,就没有任何东西会引用任何东西,所有的对象都会立即消失。 – rmaddy
顺便说一句 - 你指的是什么“争议”? – rmaddy
@rmaddy,这意味着如果我使用弱引用创建两个指向其他对象的对象,它们将立即消失? – user3524337