官方介绍:
整个项目开启关闭ARC,需要在Building Setting中设置:
某个文件关闭ARC,只需对该文件设置:-fno-objc-arc
ARC机制基本规则:
delegate使用方法:@property (assign) <id>xxxDelegate delegate;
delegate和outlet 应该用 weak 属性来声明
在ARC机制下,彻底忘掉retain、release、retainCount和autorelease。以前我们在需要安全使用一个对象时,往往会将该对象retain住,在不需要的时候进行release。在ARC环境下这么做会有编译错误。
在@property声明中,用strong和weak代替相应的retain, copy,和assign。
int, BOOL用assign修饰
__weak 定义的变量一致,该属性所声明的变量将没有对象的所有权,并且当对象被破弃之后,对象将被自动赋值nil
使用ARC的一些强制规定:
- 不能直接调用dealloc方法,不能调用retain,release,autorelease,retainCount方法,包括@selector(retain)的方式也不行
- 可以用dealloc方法来管理一些资源,但不能用来释放实例变量,也不能在dealloc方法里面去掉[super dealloc]方法,在ARC下父类的dealloc同样由编译器来自动完成
- Core Foundation类型的对象仍然可以用CFRetain,CFRelease这些方法
- 不能再使用NSAllocateObject和NSDeallocateObject对象
- 不能在C结构体中使用对象指针,如果由类似功能可以创建一个Objective-C类来管理这些对象
- 在id和void*之间没有简便的转换方法,同样在Objective-C和core Foundation类型之间的转换都需要使用编译器制定的转换函数
- 不能再使用NSAutoreleasePool对象,ARC提供了@autoreleasepool块来代替它,这样更有效率
- 不能使用内存存储区(不能再使用NSZone)
- 不能以new为开头给一个属性命名
- 声明outlet时一般应当使用weak,除了对StoryBoard这样nib中间的顶层对象要用strong
- weak相当于老版本的assign,strong相当于retain
老版本的工程是可以转换成使用ARC的工程的,转换规则包括:
- 去掉所有的retain,release,autorelease
- 把NSAutoRelease替换成@autoreleasepool{}块
- 把assign的属性变为weak
其他文章:http://blog.csdn.net/zkdemon/article/details/7446385
dealloc方法的使用:
- 已经开启了arc,dealloc还可以使用,只是在代码中中不能显示调用,在dealloc方法中不可以包含[super dealloc]。
- 在dealloc中一般用来解除delegate,例如self.webView.delegate = nil;
- 开始的时候注册了notification等,那么是需要在dealloc中把这些notification移除掉
- 如果某个类没有调用dealloc方法,会导致内存泄露,这时要检查在该类内部是否有其他对象调用了该对象导致无法成功释放。
相关推荐
arcengine内在图层创建(全)arcengine内在图层创建(全)arcengine内在图层创建(全)arcengine内在图层创建(全)
在ArcEngine中创建内存图层,版本是9.2,创建完操作和普通图层一样方便。
ARC STM32 使用手册,包括很多实例说明
呵呵,本人自己做的arcengine9.2软件开发包帮助文档使用视频,适合初级入门者,不懂得如和使用英文帮助文档的。 先唠叨两句自己的心得体会:在开始学习的时候不要有畏惧感觉,一看到英文帮助文档,好家伙,那么庞大...
ArcEngine开时使用Arcgis自带的一些命令
arc_conv========Command-line visual novel toolkit written by w8m in pure ASM
zip包文件里是一个xcode工程,里面有ARC和非ARC模版宏定义和使用例子,
ios9 单例模式区分arc与非arc宏的使用,ios9 模式下能运行!
在arcengine的scenecontrol中使用Opengl
ArcEngine 渲染的使用 ,来源于百度文库,写得还可以,分享下。
在ARC下使用GCD实现单例模式对应的Demo。
使用WinRar打包ArcEngine程序
SmoothLine 2019/8/20 1、功能描述: ... 开发工具:vs2017、ArcEngine10.4、DevExpress插件 平台:.net Framework4.6 3、解决方案中目录结构: |---README.txt //说明文档 |---Form1.cs //主界面及代码
ArcScene三维制作ArcScene三维制作ArcScene三维制作ArcScene三维制作
arc_conv_r55解包工具
页面切换教程,使用了ARC技术,一个简单的例子。
7. ArcEngine中使用上下左右键移动地图功能的实现 15 8. 缓冲区的创建 16 9. C#制作鹰眼全过程(引自ESRI中国社区) 18 10. ArcEngine中拓扑的使用- - 20 11. 为什么使用接口编程{转载} 23 12. ArcEngine中闪烁目标 26...
数据库、ArcCatalog空间数据源正常访问,数据库设置没问题时,ArcEngine连接SDE时报"ORA-12560: TNS: 协议适配器错误"的解决办法;ArcEngine连接SDE总结;ArcSDE:C#打开SDE数据库的几种方式总结
详细介绍了IOS中ARC的使用方法。一看便懂 。