浅谈iOS内存管理
来源:互联网 发布:机械矩阵沙盘排名 编辑:程序博客网 时间:2024/05/19 10:40
作为一只小菜鸟的一点小总结,请各位见笑
内存管理
内存管理分为两种情况:
第一种:ARC
ARC情况下,是自动释放内存,为系统管理,其中的属性的修饰用strong和weak.strong修饰的是对象,而weak修饰的是assign对应的东西,例如delegate.
在ARC中基本不会出现野指针和内存泄露的情况,但是如果是XXManager的变量 需要注意使用全局变量 防止回调事件不会触发,该管理者就被释放掉.
在ARC下使用MRC文件,需要配置 -fno-objc-arc
在MRC下使用ARC需要配置-fobjc-arc
第二种:MRC
MRC情况下,都是程序员做手动的释放遵循”谁开辟,谁释放”的原则,引用计数+1,就需要相应的释放一下,需要重写dealoce方法,它的属性修饰,需要用retain,copy,assign
其中retain会让引用计数+1,就是相当于拉了一条线指向对象,使一个目标也可以引用到它,对其中的对象进行修改.
copy相当于又照着原来的对象做了一份一摸一样变量,自己使用,可以做任何想做的事儿
assign就是说有那么一个变量,并没有指向它,delegate用的就是assi修饰
MRC中内存管理问题野指针和内存泄露很常见,每一个retain或者copy都需要对应一个release(autorelease) 或者remove
release是直接释放所有权,autorelease是出了自动释放池释放所有权,其中提示bad address code = 1话一般是内存提前释放,又去调用造成的野指针 内存泄露是指没有被释放干净,不会走dealoce方法造成内存被对象长期占用,导致的内存不够用
在block中使用不加修饰的内存指针会导致循环引用需要加上__block __weak typeof(变量名)新名字 = 变量名
autorelease是将对象放到自动释放池中去管理,因此只想要将对象放入一遍即可,不需要多次release
- IOS内存管理浅谈
- iOS内存管理浅谈
- 浅谈iOS内存管理
- 浅谈iOS内存管理
- 浅谈iOS内存管理
- ios浅谈内存管理
- 浅谈 ios 内存管理
- linux 内存管理浅谈
- 浅谈Linux内存管理
- 浅谈linux内存管理
- 浅谈linux内存管理
- 浅谈 Qt 内存管理
- 浅谈内存管理
- 浅谈linux内存管理
- 浅谈 Qt 内存管理
- 浅谈OC内存管理
- 浅谈C++内存管理
- 浅谈内存管理
- 创建型模式01:简单工厂模式、工厂方法模式、抽象工厂模式
- The JavaScript Event Loop: Explained
- POJ 1584 A Round Peg in a Ground Hole
- sizeof求结构体内存大小
- 多线程经典问题1——主线程子线程交替问题
- 浅谈iOS内存管理
- 黑马程序员------OC中NSLog与printf的区别
- Linux下如何用GCC编译动态库
- UI Block传值
- 动态规划基础入门(以数字三角形为例)
- Nginx模块开发(3)————使用upstream访问第三方服务
- leetcode 110: Balanced Binary Tree
- Dialog中EditText 弹出软键盘
- SDWebImage的使用