ARC 学习笔记(二)-Outlet与弱引用

本文探讨了在使用Storyboard时如何通过InterfaceBuilder生成的Outlet对象进行合理的内存管理。解释了为什么大多数情况下Outlet应该设置为weak以避免循环引用,并说明了在特定场景下需要使用strong类型的例外情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们使用storyboard时,可以使用Interface Builder生成Outlet对象,然后你会发现其中的内存管理属性一般都是weak修饰符。其实这是为了防止循环引用。因为一般我们都是拖出来的subview,而Outlet的持有者是superview对象,如果再用strong来修饰subview的话,那么就会出现父子的引用循环。
这里写图片描述

如果不设置为weak类型,那么UIViewController就不会释放这些view的所有权,直到系统调用unload方法,然后你需要在这个方法中将view置为nil。但是当界面中的控件一多的话,内存泄漏会越来越大。

但是并不是所有的Outlet都是用weak修饰符。当使用Interface builder生成的第一层view或者windows被作为Outlet来使用的话,那么就需要设置为strong类型了。比如,storyboard中的各个scene。原因也很简单,没有被任何人强引用的对象,生成之后就会被立即释放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值