如何在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.

如何在cocos2d项目中enable ARC的更多相关文章

  1. [Laravel-Swagger]如何在 Laravel 项目中使用 Swagger

    如何在 Laravel 项目中使用 Swagger http://swagger.io/getting-started/ 安装依赖 swagger-php composer require zirco ...

  2. 如何在NodeJS项目中优雅的使用ES6

    如何在NodeJS项目中优雅的使用ES6 NodeJs最近的版本都开始支持ES6(ES2015)的新特性了,设置已经支持了async/await这样的更高级的特性.只是在使用的时候需要在node后面加 ...

  3. 如何在VUE项目中添加ESLint

    如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...

  4. 如何在mvc项目中使用apiController

    文章地址:How do you route from an MVC project to an MVC ApiController in another project? 文章地址:How to Us ...

  5. 如何在Ionic2项目中使用第三方JavaScript库

    onic的官网放出一记大招Ionic and Typings,来介绍如何在Ionic2项目中使用第三方JavaScript库. 因为在前阵子正好想用一个非常有名的第三方JS库ChartJs来实现一些东 ...

  6. 如何在maven项目中使用spring

    今天开始在maven项目下加入spring. 边学习边截图. 在这个过程中我新建了一个hellospring的项目.于是乎从这个项目出发开始研究如何在maven项目中使用spring.鉴于网上的学习资 ...

  7. 如何在Vue-cli项目中使用JTopo

    1.前言 jTopo(Javascript Topology library)是一款完全基于HTML5 Canvas的关系.拓扑图形化界面开发工具包.其体积小,性能优异,由一群开发爱好者来维护.唯一感 ...

  8. 如何在Vue项目中给路由跳转加上进度条

    1.前言 在平常浏览网页时,我们会注意到在有的网站中,当点击页面中的链接进行路由跳转时,页面顶部会有一个进度条,用来标示页面跳转的进度(如下图所示).虽然实际用处不大,但是对用户来说,有个进度条会大大 ...

  9. 如何在Vue项目中使用Typescript

    0.前言 本快速入门指南将会教你如何在Vue项目中使用TypeScript进行开发.本指南非常灵活,它可以将TypeScript集成到现有的Vue项目中任何一个阶段. 1.初始化项目 首先,创建一个新 ...

随机推荐

  1. spring+mybatis利用interceptor(plugin)兑现数据库读写分离

    使用spring的动态路由实现数据库负载均衡 系统中存在的多台服务器是"地位相当"的,不过,同一时间他们都处于活动(Active)状态,处于负载均衡等因素考虑,数据访问请求需要在这 ...

  2. OpenRisc-35-基于orpsoc,eCos的sd card controller的测试实验

    引言 之前,曾经在orpsoc的平台上,测试验证过其sd card controller的linux的驱动,但是并不是很完美,经过努力,终于在eCos下完成了其全部功能的验证,包括驱动层验证,文件系统 ...

  3. 【C语言】在两个数成对出现的数组中找到一个单独的数。

    //在两个数成对出现的数组中找到一个单独的数.比如{1,2,3.3,1,4.2},即找出4 #include <stdio.h> int find(int arr[], int len) ...

  4. Taxonomy of class loader problems encountered when using Jakarta Commons Logging(转)

    Acknowledgments I would like to thank Jacob Kjome for reviewing early drafts of this document. His c ...

  5. hadoop 学习入门 一 云计算之旅

    一. 什么是云计算: 云计算是分布式计算.网格计算.并行计算.效用计算.网络存储.负载均衡.虚拟化.网络计算等传统计算技术的融合体. 二. 云计算的核心技术: 1 编程模型 2 海量数据分布存储技术 ...

  6. Js版游戏打砖块开发过程详细

    最近对js的小游戏开发来了兴趣,前段时间由于回答度娘知道的提问写了个贪吃蛇,虽然难度不大并不复杂,感觉还挺有意思.感觉小时候玩过的什么俄罗斯方块,坦克大战什么的都可以试着用js实现下,这天来了兴致又想 ...

  7. Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744400 之前我向大家介绍了史上最简单的滑动菜单的实现方式,相信大家都还记得.如 ...

  8. CodeForce 439C Devu and Partitioning of the Array(模拟)

     Devu and Partitioning of the Array time limit per test 1 second memory limit per test 256 megabytes ...

  9. Stripe

    Description Once Bob took a paper stripe of n squares (the height of the stripe is 1 square). In eac ...

  10. CWnd中PreCreateWindow、PreSubclassWindow、SubclassWindow的区别

    http://blog.csdn.net/swimmer2000/archive/2007/10/30/1856213.aspx MFC(VC6.0)的CWnd及其子类中,有如下三个函数:     / ...