最简单的做网站工具,介绍好的电影网站模板下载,网站建设需要机房服务器,网站的数据库怎么做自动引用计数(Automatic Reference Counting#xff0c;ARC)#xff0c;是Swift语言管理类的实例的方式。当创建某个类的一个新实例后#xff0c;ARC自动为新实例分配内存空间#xff0c;用于保存实例的类型和存储属性#xff0c;当将该实例赋给常量、变量或其他实例的属性… 自动引用计数(Automatic Reference CountingARC)是Swift语言管理类的实例的方式。当创建某个类的一个新实例后ARC自动为新实例分配内存空间用于保存实例的类型和存储属性当将该实例赋给常量、变量或其他实例的属性时称两者建立了“强连接”或称“强引用”只要这个强引用存在ARC将保护该实例其占据的内存不能被释放。相对地可以定义“弱引用”弱引用的实例可以被释放掉指向该实例的变量将自动置为空值nil。 01、弱引用 解决强引用环问题的方法有两种其一采用弱引用方式其二采用非占用引用方式。弱引用方式下不再被强引用的实例会立即从内存中释放掉故弱引用方式用于类的实例具有短的生命期的情况下非占用引用方式用于类的实例具有较长生命期的情况下。
弱引用方式在定义变量时需使用weak关键字在程序段1中将第26行的语句添加weak改为
“weak var author:Author?”或者将第40行的语句添加weak改为“weak var book:Book?”或者上述两条语句均添加weak关键字。这种添加了weak关键字后的语句将构成弱引用。程序段1的执行结果如图1所示。 ■ 图1 添加了弱引用的程序段1的执行结果
由图1可知类Book和类Author的析构器均被执行了说明这两个类创建的实例都被从内存中释放掉了。以程序段8-7的第26行改为弱引用为例其引用结构如图2所示。 ■ 图2 添加了弱引用后的引用结构
在图2中当将zh和bk都置为空值nil后图2(b)中左侧的Author实例没有被其他实例强引用故该实例将被ARC从内存中释放掉此时执行该实例的析构器输出“The Author instance is deallocated.”。然后Book实例没有被其他实例强引用故ARC将其从内存中释放掉此时执行该实例的析构器输出“The Book instance is deallocated.”。