Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / 初识Swift中的值和引用,循坏引用、代理的注意点

1.0 在Swift中分有值类型和引用类型 Int 、String 、 结构体和枚举都属于值类型, 将值类型传递给方法是,将在内存中创建其副本,并传递这个副本;这样我们就可以随心所欲修改它,而不用担心这会修改传入的原始值。 传递引用类型时不会复制它,而将其地址提供给可能使用他们的函数或方法。闭包以及从类实例化得到的对象都属于引用类型。将闭包或者对象传递给方法时,不会创建其副本,而是传递引用(内存地址)。由于传递引用类型时不会创建其副本,因此需要特别小心,确保在正确的时间妥善地释放它们,过早的释放内存,将会导致崩溃,过晚又会导致内存泄露。2.0 引用循环 在这里我们就用一个简单地例子,来简单的说明在开发中,怎么样会造成循环引用。 例:一个人拥有一条狗,而狗拥有一个主人 直接上代码  这里Person类里面拥有一个dog属性, 而deinit 相当OC中的dealloc函数 这里Dog类里面有个主人。。。 在 main.swiftz中 我们这样使用   运行程序,我们会看到,输出台没有任何输出。。。。而当我们在它们其中一个类型中,在声明属性时 添加 weak 时,情况就会不一样。。如,运行程序,就会打印出,人被回收,狗被回收。。。 从这个例子我们看以看出 在使用 var 声明时,默认是强引用,相当OC中的strong 讲到这里 var 默认强引用,就想到代理 一开始,我用Swift写代理是这么写的个人感觉,没错啊,可是在OC环境下变成了这时感觉,跟苹果的设计理念不同啊,一般代理属性都应该是 weak啊,然后我就找到了 var delegate : LMTablBarViewDelegate? 这句,在前面添加weak 之后,在看看变化 这样终于是自己想要的结果。。。。所有我们在设置 代理属性时 应该 在前面 添加 weak修饰。这些只是个人看法,如有错误,希望大家能帮忙修正Swift 正式开源,同时开源 Swfit 核心库和包管理器 http://www.linuxidc.com/Linux/2015-12/125847.htmApple Swift学习教程  http://www.linuxidc.com/Linux/2014-09/106420.htm使用 Swift 构建一个 iOS 的邮件应用 http://www.linuxidc.com/Linux/2014-08/105542.htmSwift 2.0开源化  http://www.linuxidc.com/Linux/2015-06/118594.htmLinux下搭建Swift语言开发学习环境 http://www.linuxidc.com/Linux/2015-12/125983.htmSwift 的详细介绍:请点这里本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-12/126073.htm