iOS培训篇——OC 自动引用计数方法介绍
2013-11-26 17:16
337 查看
先前大家都有看到过各种有关OC的介绍及讨论,那么相信大家也应该对OC中的引用计数有一点了解吧!如果没有,没关系,下面我们就一起来看一下相关介绍!
自动引用计数提供了一种和C++ auto服务相似的服务,能够让对象自动参与到retain/release/autorelease周期中而无需用户显示操纵对象。
OC使用了一种以约定为基础的引用计数。被持有的对象会被保留下来,这会增加其引用计数。当对象被释放时,其引用也会被释放。当保留的计数归零时,该对象就会被销毁。
为了使用工厂方法(会返回创建好的实例但却不会控制其生命周期的方法),OC提出了自动释放池的概念。
他们是对象的局部栈列表,在处理循环结束时(通常是处理完事件队列中的某个事件时),该池就会被清空,这会减少列表中对象的引用计数。如果引用计数降为0,那么对象就会被毁掉。除此之外 ,如果对象还被循环处理中的其他代码所持有,那么该对象还可以供后续使用。
OC对于方法有一个非正式的命名约定以标识其用途。调用者希望能够控制诸如init与new所返回的对象。带有with的方法(如NSString的stringWithFormat)会返回一个自动释放的对象。
OC 2.0向语言中添加了大量内容,如块与属性,他们具有自动的保持与释放语法。但借助于自动的引用计数,编译器现在可以推断出应该在何处使用恰当的retain/release调用。
另外,如果编译器能够判明出在一对函数间的调用动作序列,那么就可以优化自动插入的retain/release调用。为了实现这一点,某些调用(如init与new)就会被分配给类成员,这些新扩展可以给编译器一定的指示。但这么做的副作用就是调用未被注解的init方法时,如果他们没有响应正常的init方法行为,那么就会出现警告。
新的行为会在即将发布的Clang中得到实现,可以通过-fobjc-arc参数启用。内存受限的设备可以使用它来代替OC的垃圾收集,如果在桌面平台上还可以通过-fobjc-gc参数继续使用OC的垃圾收集。
看过之后,如果你有兴趣的话,继续关注本站,了解更多相关iOS开发、iPhone开发内容!
自动引用计数提供了一种和C++ auto服务相似的服务,能够让对象自动参与到retain/release/autorelease周期中而无需用户显示操纵对象。
OC使用了一种以约定为基础的引用计数。被持有的对象会被保留下来,这会增加其引用计数。当对象被释放时,其引用也会被释放。当保留的计数归零时,该对象就会被销毁。
为了使用工厂方法(会返回创建好的实例但却不会控制其生命周期的方法),OC提出了自动释放池的概念。
他们是对象的局部栈列表,在处理循环结束时(通常是处理完事件队列中的某个事件时),该池就会被清空,这会减少列表中对象的引用计数。如果引用计数降为0,那么对象就会被毁掉。除此之外 ,如果对象还被循环处理中的其他代码所持有,那么该对象还可以供后续使用。
OC对于方法有一个非正式的命名约定以标识其用途。调用者希望能够控制诸如init与new所返回的对象。带有with的方法(如NSString的stringWithFormat)会返回一个自动释放的对象。
OC 2.0向语言中添加了大量内容,如块与属性,他们具有自动的保持与释放语法。但借助于自动的引用计数,编译器现在可以推断出应该在何处使用恰当的retain/release调用。
另外,如果编译器能够判明出在一对函数间的调用动作序列,那么就可以优化自动插入的retain/release调用。为了实现这一点,某些调用(如init与new)就会被分配给类成员,这些新扩展可以给编译器一定的指示。但这么做的副作用就是调用未被注解的init方法时,如果他们没有响应正常的init方法行为,那么就会出现警告。
新的行为会在即将发布的Clang中得到实现,可以通过-fobjc-arc参数启用。内存受限的设备可以使用它来代替OC的垃圾收集,如果在桌面平台上还可以通过-fobjc-gc参数继续使用OC的垃圾收集。
看过之后,如果你有兴趣的话,继续关注本站,了解更多相关iOS开发、iPhone开发内容!
相关文章推荐
- iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- iOS软件开发--OC--ARC自动引用计数
- iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- 移动开发:iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- cocos2d addChild 方法会自动将 child 的引用计数加1
- IOS教程四------IOS自动引用计数
- 【iOS】自动引用计数 (循环引用)
- iOS 之ARC(自动引用计数)
- IOS开发语言Swift入门连载---自动引用计数
- 黑马程序员——Objective-C程序设计(第4版)学习笔记之17-内存管理和自动引用计数——黑马 IOS 技术博客
- OC自动引用计数
- iOS 新特性分列式 之 iOS 5.x - 主要内容:自动引用计数、故事板、控件自定义呈现、容器视图控制器
- OC学习篇之---数组对象的引用计数问题和自动释放池的概念
- iOS项目转移到自动引用计数
- 《ios_oc》重复引用、交叉引用、可见度、方法,setter、getter、自定义初始化init的修改
- 黑马程序员——OC基础:内存管理和自动引用计数(ARC)
- OC_语法入门_day5_内存管理_计数器/set方法/property的参数/循环引用/自动释放池