关闭

iOS开发~内存管理资料整理

531人阅读 评论(0) 收藏 举报
分类:

一、delloc

1、在ARC环境下delloc往往被忽略, 但还是要注意一下其用法。当需要释放一些不在 ARC 控制下的资源。例如 Core Foundation 对象中调用 CFRelease(),对那些通过 malloc() 分配的内存调用 free()、注销通知、停止Timer 等。
2、如果你是一个对象的代理的话,有时必须显式的断开和它的连接,但通常这都是自动的。 大部分情况下,代理都是弱引用(避免循环引用), 当一个即将被释放的对象是其他对象的代理的话, 当这个对象被销毁时,代理指针将会被自动设置为 nil。 弱指针在这之后会被自动清除。
3、在你的 dealloc 方法中, 你仍然可以使用实例变量, 因为他们在这时候还没被释放掉。 在 dealloc 返回之前,都不会被释放。

注意:ARC与非ARC的区别:ARC中dealloc中不得显式调用[super dealloc],不得显式[obj release],因为编译已经自动生成。dealloc是SDK4就有的特性,和ARC无关。


二、@autoreleasepool

ARC 并不是舍弃了 @autoreleasepool,而是在编译阶段帮你插入必要的 retain/release/autorelease 的代码调用。
所以,ARC 之下依然是延时释放的,仍然是依赖于 NSAutoreleasePool,跟非 ARC 模式下手动调用那些函数本质上毫无差别,只是编译器来做会保证引用计数的正确性。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:584992次
    • 积分:7427
    • 等级:
    • 排名:第3049名
    • 原创:172篇
    • 转载:65篇
    • 译文:4篇
    • 评论:120条
    联系方式
    欢迎加入QQ群 iOS:170549973 Android: 295625863
    文章分类
    最新评论