例如,是否将子视图添加到UIView对象中…创建父/子关系的示例?什么是?
到目前为止,我在我的项目中使用强大的一切,我没有使用弱,但我不确定我是否会遇到内存管理问题(或者如何检查我是否会).
任何人都可以提供创建父母与子女关系的具体情况或示例吗?
谢谢!
编辑:事实上,我的一个ViewControllers中出现了一些“接收内存警告”问题,显示了大量数据(地图视图,图像数量,文本,按钮). Everything属性有一个强大的指针.我需要修复此ViewController的内存管理问题
解决方法
绝大多数时候你想要一个强有力的参考.这就是为什么它是默认的.没有强引用的最常见原因是它是否会导致保留循环.例如,如果A具有对B的强引用,那么如果B具有对A的强引用,则您将有一个循环,并且这两个对象都不会被释放.因此,您选择其中一个对象作为所有者,并且它具有强大的参考.另一个对象有一个弱引用.
最常见的情况是授权.代表几乎总是拥有委托给它的东西.因此委托对象应该具有对委托的弱引用.作为Objective-C中的约定,一个名为delegate的属性预计会很弱. (如果这感觉倒退,请考虑一下如何在实践中使用UITableView和UITableViewDelegate,以及您想要将其视为“所有者”.)
弱委托指针不是一个严格的规则.有一些例外,例如NSURLConnection.如果委托对象的生命周期比委托更短,则可以保持强引用(通常更可取).
“已接收内存警告”不一定与内存管理有关.这只是意味着你使用了太多的内存.如果你有保留循环,那么你可能会泄漏内存,这将导致此警告.但也可能是因为你只是在使用太多的内存.仪器中的“Allocations”工具是调查此问题的最佳方法.
虽然“强”和“弱”的实现是Objective-C最近的新增功能,但它们只是正式化并为正确编写的代码多年来手动保留的代码提供了更好的语言支持.今天的所有权模式与ARC之前的相同.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。