Swift-内存管理(初级)
来源:互联网 发布:数控机床与编程教程 编辑:程序博客网 时间:2024/06/05 11:34
Swift-内存管理(初级)
/* Swift 内存管理(只有ARC模式,没有MRC模式,不需要手动管理内存,系统自动管理) *//* 3、Swift语言内存管理 (1)内存管理对象:引用类型对象(class类型) (2)内存管理原则:没有任何引用指向某个对象的时候,系统会自动销毁该对象 (3)通过ARC技术实现 */print("\n3、Swift语言内存管理")class MemARC { deinit { print("MemARC deinit") }}var mem1 = MemARC()var mem2 = mem1var mem3 = MemARC()mem1 = mem3mem2 = mem3/* 4、weak弱引用 *//* 5、unowned弱引用 */print("\n4、weak弱引用")print("5、unowned弱引用")class Ref { deinit { print("Ref deinit") } func test() { //强引用,默认的引用方式var strongRef = Ref()//weak引用(安全引用,不会持有该对象,对象销毁时系统会自动将当前对象置为nil)//弱引用一定是一个可选类型weak var weakRef:Ref? = Ref()if let we = weakRef{ we.test()}//弱引用(不是一个可选类型)unowned var unRef:Ref = Ref()//unRef.test()//这是不安全的,给一个已经被释放掉的对象发送一个消息(运行时报错)/* 6、循环强引用 解决:其中一个对象置为弱引用 (ARC非万能,在某些情况下不能很好的解决内存泄漏问题) */print("\n6、循环强引用")class Person { let name:String init(name:String) { self.name = name } var apartment:Apartment? deinit { print("\(name) is being deinit") }}class Apartment { let number:Int init(number:Int) { self.number = number } //针对两个对象之间的相互循环强引用,使用weak弱引用可以销毁两个对象,解决两对象相互强引用造成的内存泄漏 weak var teant:Person? deinit { print("Apartment #\(number) is being deinit") }}var john:Person?var number73:Apartment?john = Person(name:"John Apple")number73 = Apartment(number:73)john!.apartment = number73number73!.teant = john//两个对象没有被销毁,但是依然不能对两对象进行访问(内存泄漏)john = nilnumber73 = nil/* 7、unowned解决循环强引用 */print("\n7、unowned解决循环强引用")class Customer { let name:String var card:CreditCard? init(name:String) { self.name = name } deinit { print("\(name) is being deinit") }}class CreditCard { let number:UInt64 //unowned解决循环强引用 unowned let customer:Customer init(number:UInt64,customer:Customer) { self.number = number self.customer = customer } deinit { print("Card #\(number) is being deinit") }}var tom:Customer?tom = Customer(name:"Tom Apple")tom!.card = CreditCard(number:32797979668768,customer:tom!)tom = nil
1 0
- Swift-内存管理(初级)
- Swift-析构方法与内存管理(初级)
- Swift-内存管理(高级)
- Swift内存管理(ARC)
- 内存管理初级
- OC 内存管理(初级)
- 内存管理初级
- OC内存管理初级
- 内存管理初级
- OC 内存管理初级
- 内存管理初级
- 09 内存管理初级
- 内存管理初级
- OC__内存管理初级
- OC内存管理初级
- 9、内存管理初级
- 内存管理初级
- Swift-深浅拷贝与内存管理(高级)
- python数据结构学习笔记-2017-01-08-01-N皇后问题、迷宫问题和跳马问题的递归解决
- OpenGL 入门13
- 翻译:结合卫星图像和机器学习预测贫穷
- JAVA 多线程
- tomcat出现403问题
- Swift-内存管理(初级)
- 深入理解Java虚拟机:垃圾收集
- 一些投资理财渠道(仅供参考)
- 一念永恒 > 第520章 黑色光柱!
- Android textview 属性大全
- CentOS6 网络管理之网卡配置及简单路由设置
- Java编程思想笔记——第八章 多态
- php 的九大全局变量$_GET,$_POST,$_SERVER
- 无题