Swift提供了两种方法来解决强引用循环问题:弱引用和无主引用
在阜阳等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、成都做网站 网站设计制作按需设计网站,公司网站建设,企业网站建设,品牌网站建设,成都全网营销推广,外贸营销网站建设,阜阳网站建设费用合理。一、弱引用
弱引用允许循环引用中的一个对象不采用强制方式引用另外一个对象,这样就不会引起强引用循环的问题,弱引用适用于引用对象可以没有值的情况,因为若引用可以没有值,必须将每一个若引用声明为可选类型,使用关键字weak声明若引用对象
class Employee { var no:Int var name:String var job:String var salary:Double var dept:Department? init(no:Int,name:String,job:String,salary:Double){ self.no = no self.name = name self.job = job self.salary = salary } deinit{ println("Employee对象已经被析构") } }
class Depatment { var no:Int var name:String weak var manager:Employee? init(no:Int,name:String){ self.no = no self.name = name } deinit{ println("Department对象已经被析构") } }
二、无主引用
无主引用与弱引用一样,允许循环引用中的一个对象不采用强引用的方式引用另外一个对象,这样就不会引起强引用循环的问题,无主引用对象适用于引用对象永远有值的情况,它总是被定义为非可选类型,使用关键字unowned表示无主引用
class Depatment { var no:Int var name:String unowned var manager:Employee init(no:Int,name:String){ self.no = no self.name = name } deinit{ println("Department对象已经被析构") } }
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。