前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ios内存管理机制

ios内存管理机制

作者头像
赵哥窟
发布2020-06-16 15:04:18
6780
发布2020-06-16 15:04:18
举报
文章被收录于专栏:日常技术分享

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,防止野指针的生成。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • alloc、new
  • retain
  • copy
  • strong
  • release
  • autorelease
  • assign
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档