专栏首页ios 技术积累ios内存管理机制

ios内存管理机制

iOS内存管理机制的原理是引用计数,当这块内存被创建后,它的引用计数+1,表示有一个对象或指针持有这块内存,拥有这块内存的所有权,如果这时候有另外一个对象或指针指向这块内存,那么为了表示这个后来的对象或指针对这块内存的所有权,引用计数1->2,之后若有一个对象或指针不再指向这块内存时,引用计数-1,表示这个对象或指针不再拥有这块内存的所有权,当一块内存的引用计数变为0,表示没有任何对象或指针持有这块内存,系统便会立刻释放掉这块内存。

alloc、new

类初始化方法,开辟新的内存空间,引用计数+1;

retain

实例方法,不会开辟新的内存空间,引用计数+1;

copy

实例方法,把一个对象复制到新的内存空间,新的内存空间引用计数+1,旧的不会;其中分为浅拷贝和深拷贝,浅拷贝只是拷贝地址,不会开辟新的内存空间;深拷贝是拷贝内容,会开辟新的内存空间;

strong

强引用,引用计数+1;

release

实例方法,释放对象;引用计数-1;

autorelease

延迟释放;autoreleasepool自动释放池;当执行完之后引用计数-1; 还有是initWithFormat和stringWithFormat 字符串长度大于9时,引用计数+1;

assign

弱引用 ;weak也是弱引用,两者区别:assign不但能作用于对象还能作用于基本数据类型,但是所指向的对象销毁时不会将当前指向对象的指针指向nil,有野指针的生成;weak只能作用于对象,不能作用于基本数据类型,所指向的对象销毁时会将当前指向对象的指针指向nil,防止野指针的生成。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Swift 类和结构体

    类和结构体有着类似的定义方式。我们通过关键字class和struct来分别表示类和结构体,并在一对大括号中定义它们的具体内容:

    赵哥窟
  • IDEA 报错Disconnected from the target VM, address:

    今天写了一个接口,运行Idea报错Disconnected from the target VM, address: '127.0.0.1:59995', tr...

    赵哥窟
  • Axure RP9 登录面板切换

    赵哥窟
  • Python的内存管理机制

    任何编程语言都会有一个内存模型,以便管理为变量分配的内存空间。不同的编程语言,如C、C++、Java、C#,Python,它们的内存模型都是不相同的,本文将以现...

    蒙娜丽宁
  • Effective.Java 读书笔记(6)内存泄漏

    当你使用直接操作内存的语言,例如C或者C++的时候,一些内存释放的操作会比较麻烦,而我们使用java这一种拥有垃圾回收机制的语言的时候,这份工作就变得轻松多了,...

    Mezereon
  • network3D: 交互式桑基图

    桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、...

    生信宝典
  • iOS最全的常用正则表达式大全

    很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一...

    roc
  • 笔记 | 史上最全的正则表达式

    原文:http://www.cnblogs.com/zxin/archive/2013/01/26/2877765.html 点击文末阅读原文即可 很多不太懂正...

    昱良
  • PHP开发中常用的正则表达式

    沈唁
  • 最全的常用正则表达式大全

    运维行业正在变革,推荐阅读:30万年薪Linux运维工程师成长魔法 很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符...

    小小科

扫码关注云+社区

领取腾讯云代金券