ARC使用规则

第一、不能使用retain/release/retainCount/autorelease

使用ARC,内存管理由编译器来负责,无需写上面关键词

第二、在ARC环境下,使用alloc/new/copy/mutableCopy来生成/持有对象

copy/mutableCopy的使用需要copyWithZone的支持,如果没有,则不支持copy/mutableCopy

第三、不能显示调用[super dealloc]

第四、使用@autoreleasepool块来替代NSAutorealeasePool

第五、不能使用区域NSZone

第六、对象变量不能作为C语言结构体的成员

第七、显示转换id和void *

在不使用ARC时,下面的转化是正确的

id obj=[[NSObject alloc] init];

void *p=obj;

如果使用ARC,上述转换就会报错,加__bridge转换

id obj=[[NSObject alloc] init];

void *p=(__bridge void*)obj;

时间: 2024-07-31 14:45:57

ARC使用规则的相关文章

ARC

ARC是什么 ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting).简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了. 该机能在 iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2 可以使用该机能.简单地理解ARC,就是通过指定的语法,让编译器(LLVM 3.0)在编译代码时,自动生成实例的引用计数管理部分代码.有一点,ARC并不是G

iOS ARC机制

iOS提供了ARC功能,很大程度上简化了内存管理的代码. 1.ARC的本质: 采用ARC后,iOS开发者完全可以抛弃之前繁琐的内存管理机制.在开启ARC的情况下,编译器会自动的在程序的正确位置隐式的插入retain,release和autorelease等.特别明确,ARC只是objective-C编译器的特征,所有ARC相关处理都会发生在构建应用程序的时候,这和内存垃圾回收机制不同. 2.基本的ARC使用规则 1)代码中不能使用retain,release,autorelease等: 2)不能

Objective-C中,ARC下的 strong和weak指针原理解释

Objective-C中,ARC下的 strong和weak指针原理解释 提示:本文中所说的"实例变量"即是"成员变量","局部变量"即是"本地变量" 一.简介 ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因为编译器为你处理了一切 注意:ARC 是编译器特性,而不是 iOS 运行时特性(除

iOS应用开发:什么是ARC?

ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting).简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了. ARC是什么 变化点 使用ARC的好处 不好的地方 ARC基本规则 Objective-C对象 引用关键字 总结 新年伊始,万象更新.新一年开始,我们来更加深入了解一下iPhone开发的内部.作为开始,我们先来了解一下ARC. ARC是什么 ARC是iO

ARC - strong和weak指针

ARC指南1 - strong和weak指针 提示:本文中所说的"实例变量"即是"成员变量","局部变量"即是"本地变量" 一.简介 ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因为编译器为你处理了一切 注意:ARC 是编译器特性,而不是 iOS 运行时特性(除了weak指针系统),它也不

ios新特征 ARC详解

IOS ARC 分类: IOS ARC2013-01-17 09:16 2069人阅读 评论(0) 收藏 举报 目录(?)[+] 关闭工程的ARC(Automatic Reference Counting) 顺带附上ARC教程 本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论.请不要将本文的部分或全部内容用于商用,谢谢合作. 欢迎转载本文,但是转载请注明本文出处:http://www.onevcat.com/2012/06/arc-hand-by

iOS-旧项目中手动内存管理(MRC)转ARC

在ARC之前,iOS内存管理无论对资深级还是菜鸟级开发者来说都是一件很头疼的事.我参 加过几个使用手动内存管理的项目,印象最深刻的是一个地图类应用,由于应用本身就非常耗内存,当时为了解决内存泄露问题,每周都安排有人值班用 Instruments挨个跑功能,关键是每次都总能检查出来不少.其实不管是菜鸟级还是资深级开发者都避免不了写出内存泄露的代码,规则大家都懂,可是 天知道什么时候手一抖就少写了个release? 好在项目决定转成ARC了,下面将自己转换的过程和中间遇到的问题写出来和大家共享,希望

第一部分 1.9 OC基本语法-ARC

一.基本简介 ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因为编译器为你处理了一切 ARC 是编译器特性,而不是 iOS 运行时特性,它也不是类似于其它语言中的垃圾收集器.因此 ARC 和手动内存管理性能是一样的,有时还能更加快速,因为编译器还可以执行某些优化 二.基本原理1.规则ARC 的规则非常简单:只要还有一个强指针变量指向对象,对象就会保持在内存中

iOS之mrc转arc

一.前言 项目简介 需要转换的Objective-C文件数量:1000个左右. 开发工具:Xcode 8.0.1 转换方式 我使用的是Xcode本身提供的ARC转换功能.当然你也可以手动手动转换,那不属于本文范畴,而且其工作量绝对能让你崩溃. 二.转换过程 代码备份 在进行如此大规模的更改之前,一定要先进行代码备份:直接在本地将代码复制一份,或者记住更改前代码在VCS上的版本号. 过滤无需转换的文件 找出项目中引用的仍使用手动内存管理的第三方库,或者某些你不希望转换的文件,对其添加-fno-ob