新西兰服务器

Swift内存管理概述


Swift内存管理概述

发布时间:2020-06-05 15:24:06 来源:网络 阅读:433 作者:hehemmm 栏目:移动开发

    Object-C的内存管理经历过2个阶段:手动引用计数内存管理MRC和自动引用计数内存引用管理ARC-MRC就是由程序员自己负责对象管理生命周期,负责对象的创建和销毁,ARC的程序员不用关心对象内存释放的问题,编译器在编译的时候在合适的代码位置插入内存释放代码。

    Swift在内存管理方面吸收了OC的先进思想,采用了ARC内存管理模式

    Swift中的内存对象管理是对引用对象类型的管理,即对类所创建的对象采用ARC管理,而对于值类型,如整型,浮点型,布尔型,字符串,元组,集合,枚举和结构体,是由处理器自动管理,程序员不需要管理它们的内存

    PS:

        以JAVA 和 C# 为代表的内存垃圾回收机制,程序员不用关心内存释放的问题,这种方式在后台有一个线程,负责检查已经不再使用的对象,将其释放,由于在后台有一个线程运行,所以会影响性能。

        以C++和C为代表的手动内存管理模式,使用起来比较麻烦,经常导致内存泄露和内存过度释放等问题。

一、引用计数

        每个类创建的对象都有一个内部计数器,这个计数器根据对象的引用次数,称为引用计数RC,当对象被创建的时候,引用计数为1,每次对象被引用的时候会使其引用数加1,如果不需要的时候,对象引用断开(赋值为nil),其引用计数减1,当对象的引用计数为0的时候,对象的内存被释放。

二、Swift自动引用计数示例

        

            class Employee {                     var no:Int                     var name:String                     var job:String                     var salary:Double                                          init(no:Int,name:String,job:String,salary:Double){                             self.no = no                             self.name = name                             self.job = job                             self.salary = salary }                      deinit{                             println("员工已经被析构了") } }             var ref1:Employee?            ref1 = Employee(no:10,name:"hey","IT",1000.0)

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[