如何在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.
如何在cocos2d项目中enable ARC的更多相关文章
- [Laravel-Swagger]如何在 Laravel 项目中使用 Swagger
如何在 Laravel 项目中使用 Swagger http://swagger.io/getting-started/ 安装依赖 swagger-php composer require zirco ...
- 如何在NodeJS项目中优雅的使用ES6
如何在NodeJS项目中优雅的使用ES6 NodeJs最近的版本都开始支持ES6(ES2015)的新特性了,设置已经支持了async/await这样的更高级的特性.只是在使用的时候需要在node后面加 ...
- 如何在VUE项目中添加ESLint
如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...
- 如何在mvc项目中使用apiController
文章地址:How do you route from an MVC project to an MVC ApiController in another project? 文章地址:How to Us ...
- 如何在Ionic2项目中使用第三方JavaScript库
onic的官网放出一记大招Ionic and Typings,来介绍如何在Ionic2项目中使用第三方JavaScript库. 因为在前阵子正好想用一个非常有名的第三方JS库ChartJs来实现一些东 ...
- 如何在maven项目中使用spring
今天开始在maven项目下加入spring. 边学习边截图. 在这个过程中我新建了一个hellospring的项目.于是乎从这个项目出发开始研究如何在maven项目中使用spring.鉴于网上的学习资 ...
- 如何在Vue-cli项目中使用JTopo
1.前言 jTopo(Javascript Topology library)是一款完全基于HTML5 Canvas的关系.拓扑图形化界面开发工具包.其体积小,性能优异,由一群开发爱好者来维护.唯一感 ...
- 如何在Vue项目中给路由跳转加上进度条
1.前言 在平常浏览网页时,我们会注意到在有的网站中,当点击页面中的链接进行路由跳转时,页面顶部会有一个进度条,用来标示页面跳转的进度(如下图所示).虽然实际用处不大,但是对用户来说,有个进度条会大大 ...
- 如何在Vue项目中使用Typescript
0.前言 本快速入门指南将会教你如何在Vue项目中使用TypeScript进行开发.本指南非常灵活,它可以将TypeScript集成到现有的Vue项目中任何一个阶段. 1.初始化项目 首先,创建一个新 ...
随机推荐
- spring+mybatis利用interceptor(plugin)兑现数据库读写分离
使用spring的动态路由实现数据库负载均衡 系统中存在的多台服务器是"地位相当"的,不过,同一时间他们都处于活动(Active)状态,处于负载均衡等因素考虑,数据访问请求需要在这 ...
- C# c++ 传递函数指针
C#和c++之间相互传递函数指针 在C++和C#之中都有很多callback method,可以相互调用吗,怎么传递,是我表弟的问题. 1.定义c++ dll ,导出方法 // sort.cpp : ...
- 【iOS】网页中调用JS与JS注入
非常多应用为了节约成本,做出同一时候在Android与iOS上都能使用的界面,这时就要使用WebView来做.Android和IOS上都有WebView,做起来非常省事.当然这时就要考虑怎样在Andr ...
- Eclipse用法和技巧十三:自动生成的TODO注释1
使用eclipse的快捷键自动生成的代码,经常有这样的注释. 一眼看上去这个注释和一般的注释并无什么差别,不过TODO这个字符串的颜色不一样,应该有些内容.TODO是eclipse中提供的一种任务标签 ...
- jqueryui datepicker refresh
http://stackoverflow.com/questions/6056287/jquery-ui-datepicker-prevent-refresh-onselect 给选中的TD加背景色
- JAVA之File类创建对象构造函数传参数需要注意的几点
java中File类用于创建一个文件对象. 首先看一段代码: 1. package MyText1; import java.io.File; public class MyText1 { publi ...
- HTML语言简单回顾
简单复习一下html语言. html的基本结构如下: <html> <head> <title></title> </head> <b ...
- Swift - 多线程实现方式(2) - NSOperation和NSOperationQueue
1,Swift继续使用Object-C原有的一套线程,包括三种多线程编程技术: (1)NSThread (2)Cocoa NSOperation(NSOperation和NSOperationQueu ...
- QNX---Interrupt vector numbers(原创!!!)
Interrupt intr Description 0 A clock that runs at the resolution set by ClockPeriod() 1 Keyboard 2 S ...
- Selenium WebDriver java 简单实例
开发环境 JDK 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html Eclipse: 下载地址:http ...