Swift内存管理概述
admin
2023-02-10 13:20:03
0

    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)


相关内容

热门资讯

今日重大通报“喜扣跑胡子.究竟... 您好:喜扣跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游...
今日重大发现“西南九九.可以开... 网上科普关于“西南九九有没有挂”话题很是火热,小编也是针对西南九九作*弊开挂的方法以及开挂对应的知识...
【今日要闻】“,728土豪版.... 家人们!今天小编来为大家解答,728土豪版透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪...
最新引进“皇豪互娱牛牛.可以开... 家人们!今天小编来为大家解答皇豪互娱牛牛透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里...
今日重大发现“星禾卡五星.真的... 您好:星禾卡五星这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游...
以赛促产聚动能 智绘蓝海新蓝图 为加快建设引领型现代海洋城市,推动海洋人工智能技术成果从“赛场”迈向“市场”,聚力打造海洋人工智能大...
终于懂了“边锋老友麻将.辅助开... 家人们!今天小编来为大家解答边锋老友麻将透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里...
重磅消息“中州游戏.是不是有挂... 您好:中州游戏这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏...
今日重大消息“手机麻将.辅助器... 网上科普关于“手机麻将有没有挂”话题很是火热,小编也是针对手机麻将作*弊开挂的方法以及开挂对应的知识...
今日重磅消息“快乐打筒子.怎么... 家人们!今天小编来为大家解答快乐打筒子透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买...