目前Cocos2D自身不支持ARC
第一种方法:
1.在Xcode中打开ARC
2.点击项目文件,Build Setting里Always Search User Paths设为Yes。将User Head Search Paths设为Cocos2d源代码的路径(例如:/Users/ming/Documents/cocos2d-iphone/**),并且选择recursive。
3.打开cocos2d的源代码文件夹,找到cocos2d-ios.xcodeproj文件,将其拖入你的项目里。再次点击项目文件,点Build Phases,从Link Binary With Libraries中添加libcocos2d.a,libCocosDenshion.a。此时文件名是红色的,不用管。
4.删除libs文件夹
5.运行后 main报错,改为:
#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) {
@autoreleasepool {
int retVal = UIApplicationMain(argc, argv, nil, @"AppController");
return retVal;
}
}
第二种方法:
1.删除libs文件夹 删除时选Remove References
2.创建cocos2d静态库 点击 Add Target,在弹出的对话框里,展开Framework&Library组,选择Cocoa Touch Static Library. 点next.再在出来的对话框里输入这个静态库的product Name并取消下面的两个复选框,点Finish. 然后会回到xcode里 选中创建的静态库 在它的Build Settings里Always Search User Paths设为Yes。将User Head Search Paths设为./**
3.在TARGETS里选中原目标程序,在Build Phases里的Link Binary With Libraries里添加libcocos2d-library.a
4.点击xcode的File->Add Files to "name- of-project", 找到libs文件夹,再取消下面Destination的复选框,Folders选Create groups for any added folders,Add to targets 只选你创建的静态库。然后add.
5.运行一下程序。
6.点击xcode的Edit->Refactor->Convert to Objective-c ARC 。弹出的对话框中选择你的原目标程序,不要选cocos2d-library目标程序。点Check。然后会弹出个对话框告诉你你的项目会有那些地方会进行修改,点save.
7.如果没报错就OK了。报错:dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_nonatomic
这个错误就是说App可执行文件里引用了objc_setProperty_nonatomic或objc_setProperty_atomic这些函数。但是代码里显然没有直接调用这2个函数,应该是系统在编译时生成的
静态库在编译时,Deployment Target一定要低于和等于工程的Deployment Target。否则容易出现低版本iOS运行不兼容的情况。
修改错误:在TARGETS里点击你创建的静态库-》Build Settings里找到IOS Deployment Target 版本改小