如何在cocos2d项目中enable ARC

如何在cocos2d项目中enable ARC

基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. 

cocos2d是ios app开发中最主流的2d游戏引擎,但是cocos2d开发的时候,苹果还没有推出 ARC(automatic reference counting,一种辅助内存管理的机制,编译器自动在代码中加入内存管理的语句,防止因开发者的疏忽造成的内存泄露和崩溃问题).所以如果你用cocos2d模版生成的工程,ARC是关闭的.如果直接enable ARC, 就会出现很多编译错误.

要想享用ARC的好处,就要自己想办法了.

基本思路就是,将cocos2d的文件不使用ARC.在xcode中是可指定部分源文件用arc.

方法来自于这个帖子 http://www.tinytimgames.com/2011/07/22/cocos2d-and-arc/

该文介绍的方法是,将cocos2d作为单独的工程编译(无arc),将库文件引用到enable ARC的工程中,稍加修改即可.

但是回复中有更简单的方法(这个回复的人也真够不客气的,有兴趣去看一下horseshoe7的回复).个人实操步骤如下:

注意:

  - 如果你用cocos2d v2.0以后的版本,那么你有福了,4,5,6,7都不会出错,可跳过

  - 如果你用cocos2d v1.1,那么你只会碰到4的问题,5,6,7可以跳过.

  - 如果你和我一样用了1.0.1,那么就必须修改下述所有地方. 

1. 使用LLVM: 在build setting中设置默认编译器,搜"LLVM", 选Apple LLVM compiler 3.1

2. enable ARC: 上述界面,搜auto, 将Object C Automatic Reference Counting设为Yes.

3. complie source build phase中有列出所有的.m文件,复选中cocos2d的那些文件,回车,输入"-fno-objc-arc",回车. 这样,这些文件就不会被ARC检查. 建议将cocos2d自己生成的AppDelegate.m和RootViewController.m都关ARC.只在自己的代码中使用ARC.

原文地址:https://www.cnblogs.com/dyllove98/p/3187143.html