怎么样在Xcode 4.2中使用 release retain 等对象计数操作

      最近老有人问怎么把以前的代码在导入新的Xcode 4.2项目中,甚至有人跟IOS 5有关系,无法兼容ios5 ,这个经过大脑思考也不会出这个结果,苹果如果不做上下兼容,系统怎么可能卖得出去。至少绝大多数兼容 兼容至少3代左右,不然绝对死掉。我们做项目也一样,每次改动不要超过30%。因为改动太大会让用户感到陌生。那么不能编译的原因是什么呢?因为在 Xcode 4.2中加入新的编译器,这个编译器使用了一个全局的@aotorelease 表示之后的代码不要用对象计数器来管理对象的生命周期,而是和java一样自动释放。因为所有的对象都是自动释放所有禁止使用 对象计数器操作(retain 和release)。所以以前的代码导入之后无法编译。因为我从xcode的beta版开始用所有自己也遇到过,后来经过研究 把main文件的@aotorelease语法块去掉 换成以前的nsautorelease 对象并修改Build Settings的Objective-C++ Automatic Reference Counting ABI incompatibilities 为NO就可以了 当然这个是Apple  LLVM compiler 3.0的编译器的属性 如果你没有使用这个编译器编译就不会有这个选项 也不会出现那个问题。

打赏

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注