当MRR遇到ARC就嫁了吧!
来源:互联网 发布:网络捕鱼游戏下载 编辑:程序博客网 时间:2024/05/20 06:36
ARC是咩?
ARC是iOS 5推出的新功能全称叫 ARC(Automatic Reference Counting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。
该机能在 iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2 可以使用该机能。简单地理解ARC,就是通过指定的语法,让编译器(LLVM 3.0)在编译代码时,自动生成实例的引用计数管理部分代码。有一点,ARC并不是GC,它只是一种代码静态分析(Static Analyzer)工具。旧内存管理规则:
1.(谁开发,谁治理),如果使用“alloc”或“new”开头或名字中包含“copy”的方法(例如alloc,newObject或mutableCopy)创建了一个对象,就需要使用释放release或自动释放autorelease来释放。
而使用ARC后,我们可以不需要这样做了,甚至连最基础的release都不需要了:
但是,爽就是要付出代价的,一堆ARC规则袭来:
1.retain, release, autorelease, dealloc由编译器自动插入,不能在代码中使用
2.dealloc虽然可以被重载,但是不能调用[super dealloc],也不能被调用
3.必须遵守内存管理的命名规则;
4.不能使用NSAllocateObject/NSDeallocateObject;
5.使用@autoreleasepool块替代NSAutoreleasePool;
6.不能使用区域(NSZone);
7.对象型变量不能作为C语言结构体(struct/union)的成员;
8.显示转换"id"和"void * ";
7.对象型变量不能作为C语言结构体(struct/union)的成员;
8.显示转换"id"和"void * ";
当MRR遇到到ARC,表着急
1.arc的设置是在build phases中修改compiler Flags的值。(1,直接在targets->build phases中修改compiler Flags,是否支持arc。添加:-fobjc-arc,就可以让旧项目支持arc。如果想让原来支持arc的不使用arc则添加-fno-objc-arc)
2,如果使用了arc,在@property声明中,用strong和weak代替相应的retain, copy,和assign。(不过此处有个疑问,在使用了MRR后呢,原来的weak,strong,是否还需要替换呢?)
3,如果使用了arc,NSAutoReleasePool也不能使用,测试发现,用@autoreleasepool 代替,不会编译报错。
1 0
- 当MRR遇到ARC就嫁了吧!
- MRR && ARC
- 遇到这样的男人,就嫁了吧
- 做了一个动态扇形控件Microsoft.Expression.Shapes.Arc a = new Microsoft.Expression.Shapes.Arc();我想当鼠标经过时,它就放大,该怎么做?
- 就这样当了妈
- 内存管理机制MRR/MRC和ARC
- 当你觉得做人累了,就看看这些吧!
- 当你觉得做人累了,就看看这些吧!
- 当你觉得做人累了,就看看这些吧
- 当你觉得做人累了,就看看这些吧!
- 当你觉得累了时,就看看这些吧
- 当你觉得累了,就看看这些吧
- 当你觉得做人累了,就看看这些吧!
- 当iBatis遇到了Spring
- 当WPF遇到了gif
- 当友元类遇到了继承
- 当WPF遇到了gif
- 当CompositeSubscription遇到了FragmentManager
- 7.5.1.2 装饰设计模式(THE DECORATOR DESIGN PATTERN)
- 创建桌面快捷方式
- 一个基于HTML5的canvas的js面向对象贪吃蛇
- 主流移动应用开发框架(1)——实现左右滑隐藏菜单的开源框架AndroidResideMenu二次开发
- 这 30 类 CSS 选择器,你必须记在脑袋里!
- 当MRR遇到ARC就嫁了吧!
- javaScript 创建对象 property
- 2014珠宝展柜的创新发展之路
- 专业人士教你认识双频和11ac
- Triangle
- Java系列-jsp九大内置对象
- Eclipse下搭建Struts2开发环境
- vim 配置
- 产生冠军 2094(map和set的结合使用)