Objective-c内存管理学习总结
来源:互联网 发布:苹果安装不了软件 编辑:程序博客网 时间:2024/05/21 11:37
1 内存管理思考方式
1、 自己生成的对象,自己持有,以alloc、new、copy、mutablecopy开头的方法;
2、 非自己生成的对象,自己也能持有,通过retain方法;
3、 不再需要自己持有的对象时,将其释放,用release方法;
4、 非自己持有的对象,无法释放;
2 Autorelease方法
Autoreleasepool的作用是:避免频繁申请/释放内存。
调用autorelease方法,可使取得的对象存在,但自己不持有。在对象超出指定生存范围时能够自动并正确地释放——通过将对象注册到autoreleasepool中实现,在最近的pool结束时,自动调用release方法释放对象。
特别说明:在函数返回值时,调用autorelease方法后,返回值对象的释放机制——在每一次事件触发时(即一个运行循环runloop),系统会自动生成一个autoreleasepool,在事件响应结束时,通过释放此pool,来释放那些所调用的函数产生的对象。
网友解释:在Iphone项目中,大家会看到一个默认的Autorelease pool,程序开始时创建,程序退出时销毁,按照对Autorelease的理解,岂不是所有autorelease pool里的对象在程序退出时才release,这样跟内存泄露有什么区别?
答案是,对于每一个Runloop, 系统会隐式创建一个Autoreleasepool,这样所有的release pool会构成一个象CallStack一样的一个栈式结构,在每一个Runloop结束时,当前栈顶的Autorelease pool会被销毁,这样这个pool里的每个Object会被release。
那什么是一个Runloop呢? 一个UI事件,Timer call, delegatecall,都会是一个新的Runloop。
- Objective-c内存管理学习总结
- Objective-C内存管理总结
- Objective-c内存管理总结
- Objective-C内存管理总结
- C++/Objective-C内存管理对比学习
- Objective-C内存管理总结 iphone
- objective-c内存管理一点总结
- objective-c 编程总结 内存管理
- Objective-C内存管理总结
- 【黑马程序员】---Objective-C内存管理总结
- #Objective - C - OC内存管理总结
- #Objective - C - Eighth-day 内存管理总结
- Objective-C学习——内存管理
- Objective-C基础教程学习笔记 内存管理
- 【Objective-C学习笔记】内存管理
- 【Objective-C学习-4】OC内存管理
- objective-c 内存管理学习笔记
- Objective-C的内存管理学习记录
- Nyoj 22 素数求和问题
- Android实现XML解析的几种技术
- HDU 2588 GCD(欧拉函数)
- 黑马程序员之java核心部分面向对象4
- Linux 0.11中write实现
- Objective-c内存管理学习总结
- HZAU_Parser
- Java中调用外部的exe文件源代码
- (要正式学Linux,发现大一学的c底子太薄,看专业书籍重学。)重写简单的整数中取某一位的算法。
- 内存泄露之Cursor篇
- 如何判断是手机或电脑访问web
- for循环时候可以+2循环
- 如何做到每天写代码?
- BluetoothChat