我正在使用应用程序的用户界面,并且正在以编程方式进行操作。我了解保留周期背后的想法,并且对我可以确定一个保留周期很有信心,但是当我尝试避免保留周期时,Xcode会向我发出警告。
本质上,我正在创建一个名为的属性titleLabel
,该属性将具有我的标题,并对其进行viewDidLoad
初始化,并将其放在我的视图中。唯一的问题是,我收到一条Xcode警告,内容为:
将保留对象分配给弱变量;分配后将释放对象
我的属性定义如下:
@property (nonatomic, weak) UILabel *titleLabel;
很显然,我可以通过改变解决Xcode的警告weak
,以strong
我的属性定义,但我相信这将创建一个保留周期(从我的理解),因为该按钮被握住视图控制器和视图控制器握住按钮。
谁能给我一些有关如何正确执行此操作的见解?
您的理解是有缺陷的。如果标签要保留对其视图控制器的引用,并且将属性定义为,则将有一个保留周期strong
。但是,视图不保留对其视图控制器的引用,因此没有循环。Xcode警告您,标签引用将在分配后消失。您甚至没有通过将其添加为子视图来保存(保留该视图),因为您在尝试时已将其释放。
不保留对控制器的引用的视图的一种准例外是表和集合视图,它们具有委托和数据源,通常是它们的管理视图控制器。但是,这些委托/数据源属性被定义为assign
属性(存在另一组问题),因此那里也没有保留周期。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句