最近升级了xcode4.5,用上了ios6的SDK。但用着用着发现一个比较烦的问题,以前很多代码提示错误,发现原来因为xcode启用了ARC,当ARC启用后会自动在代码中加入retain、release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。虽然有很大的好处,但是对于以前代码中加的retain、release等会因此报错,解决办法很简单,禁用ARC即可,方法如下:
可以在 Build Setting => "Apple LLVM compiler 3.0-Auto Reference Counting“ => "Mugrate cide from MRR to ARC" 设置为 "MIGRATE code to ARC after building with PRECHECK" 这个就可以跳过烦人的预语法检查报错, 且自动转换成ARC。
禁用可以设置 Build Setting => "Apple LLVM compiler 3.0-Code Generation“ => “Objective-C automatic Reference Counting" 置为NO。
还可以设置 "Build Phases" => "Compile Sources" 中在禁用的源文件上加编译参数: -fno-objc-arc 。
基本的ARC使用规则
代码中不能使用retain, release, retain, autorelease
不重载dealloc(如果是释放对象内存以外的处理,是可以重载该函数的,但是不能调用[super dealloc])
不能使用NSAllocateObject, NSDeallocateObject
不能在C结构体中使用对象指针
id与void *间的如果cast时需要用特定的方法(__bridge关键字)
不能使用NSAutoReleasePool、而需要@autoreleasepool块
不能使用“new”开始的属性名称 (如果使用会有下面的编译错误”Property’s synthesized getter follows Cocoa naming convention for returning ‘owned’ objects”)
使用ARC的好处
Objective-C的代码变得简单多了,因为我们不需要担心烦人的内存管理,担心内存泄露了
代码的总量变少了,看上去清爽了不少,也节省了劳动力
代码高速化,由于使用编译器管理引用计数,减少了低效代码的可能性
不好的地方
记住一堆新的ARC规则 — 关键字及特性等需要一定的学习周期
一些旧的代码,第三方代码使用的时候比较麻烦;修改代码需要工数,要么修改编译开关
分享到:
相关推荐
Xcode4.5缺少的DevToolCore.framework,老版本Xcode4.5中拷贝出来的。考虑到有朋友没有备份老版本Xcode,单独考出这个文件,解决PBXCP报错。 将这个文件解压放到报错提示的位置即可(/Contents/Developer/Library/...
macos-lion-dp4-10.8+ios6+xcode4.5.zip 含wifi,ipad,iphone等等全套bt种子
下拉刷新 ios开发常用代码 已经封装好,更新到xcode4.5 有例子
这几天安装好了IOS开发软件,所以分享下安装过程。 win7+虚拟机9+mac lion 10.8+XCODE 4.5 安装说明 非常详细 里面包含所有安装软件的下载地址和说明。
下载之前请先看一下说明: http://blog.sina.com.cn/s/blog_71715bf80101943f.html
This document contains release notes for Xcode 4.5.1. It discusses enhancements and issues resolved in Xcode 4.5.1. Improved the responsiveness of the Open Quickly dialog. 12251666 Improved ...
Xcode14.3 File not found libarclite_iphonesimulator.a and libarclite_iphoneos.a,xocde14.3会删除xocde的arc文件夹,致使项目报错,解决办法,把旧版arc包拖入xocde即可
第四版主要更新了 iOS5 与 ARC 的内容,与最新的 Xcode 4.5 匹配。 目录: Table of Contents 1 Introduction Part I: The Objective-C Language 2 Programming in Objective-C 3 Classes, Objects, and Methods...
KZLinkedConsole - 在Xcode控制台中点击链接日志跳到代码中输出日志的位置
xcode中文教程xcode中文教程xcode中文教程
Xcode 打印中文乱码
zip包文件里是一个xcode工程,里面有ARC和非ARC模版宏定义和使用例子,
Xcode 中 文 实 用 教 程
Xcode10中删除了`libstdc++`库,导致老项目在Xcode10中编译失败,解决方法如下: `libstdc++`库下载链接:https://pan.baidu.com/s/1y08On0bQo-v7Me7_rYIi-g。 或者点击—> libstdc++库 其中文件夹 1、2、3、4 ...
在Xcode4.5上调试通过,利用OpenGL ES2.0实现cubemap texture.
IOS精选代码之GIF图片显示,已封装成类,有例子,支持透明 更新之xcode4.5 拿来直接可用于开发方便
如何在Xcode 10中使用CreateML来创建用于分类文本的Core ML模型的示例
In Xcode console output Chinese characters and Unicode,Xcode的控制台输出中文
目录解压后复制到指定目录路径: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib
iOS 13.7 的安装包,在xcode中添加后,可以支持手机的真机调试。 安装地址:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport