疯狂ios讲义之建立cocos2d项目(2)

cocos2d项目如何支持ARC

iOS 5中所支持的全新特性ARCAutomatic Reference Counting)首次在iOS系统中提供了自动内存管理,从而避免由于对retainreleaseautorelease这些命令的错误调用而致使内存泄漏。实际上,Apple还成功地使得ARC能够向下兼容iOS 4的项目。现现在,愈来愈多的项目都使用了ARC来处理内存管理的引用计数。本书中全部的源代码都已经转为使用ARC,这意味着有更少的代码量、更少的Bug以及更优秀的内存管理。ios

意外的问题是,cocos2d源码并无使用ARC。这就意味着,基于cocos2d开发游戏时,不能使用ARC。到目前为止,最好的解决方案就是将cocos2d代码添加为静态库Static Library,而后就能够安全地将cocos2d静态库链接到支持ARC的目标项目程序当中了。安全

使用添加静态库的方式使cocos2d项目支持ARC,大体须要以下两个步骤。ide

cocos2d代码添加为静态库ui

重构cocos2d项目源码使之支持ARCspa

接下来,咱们执行上面两个步骤就能够将“HelloWorld”项目改成支持ARC.net

1. cocos2d代码添加为静态库

在项目导航面板中选择“HelloWorld项目,而后单击TARGETS下面的“HelloWorld这个Target,再选择“Build Settings,找到“Apple LLVM 5.0-Language-Objective C项目,展开能够看到“Objective-C Automatic Reference Countiong选项为No,如图13.8所示,说明当前项目并无使用ARCcode

103458_1KxS_262659.jpg

展开iOS下的“Framework&Library选择“Cocoa Touch Static Library”模板,而后单击“Next按钮,如图13.11所示。游戏

在项目导航面板中选择“HelloWorld”项目,而后找到libs组并删除。弹出如图13.9所示的确认对话框,单击“Remove References”按钮。不要单击“Move to Trash”按钮将这些文件移动至回收站中,由于以后还要使用到它们。内存

103551_KcQH_262659.jpg


③ 在项目导航面板中选择“HelloWorld项目,而后单击TARGETS下面的“HelloWorld这个Target,再单击HelloWorld下面的“Add Target按钮,如图13.10所示。开发

103619_IKdt_262659.jpg


展开iOS 下的“Framework&Library 选择“Cocoa Touch Static Library ”模板 ,而后单击“Next 按钮,如图13.11 所示。


103715_SZBv_262659.jpg

⑤ 为静态库命名,在“Product Name”中输入cocos2d-library,而后单击“Finish按钮,将静态库目标程序添加到HelloWorld项目中,如图13.12所示。


建立cocos2d-library目标程序后,选择它,能够看见“Build Settings窗格,须要修改“Search Paths中的两项内容,在右上角的搜索栏中输入“search。将“Always Search User Paths设置为Yes,将“User Header Searh Paths设置为./**,如图13.13所示。

在项目导航面板中选择“HelloWorld项目,而后单击TARGETS下面的“HelloWorld这个Target,选择“Build Phases标签页,展开“Link Binary With Libraries列表,如图13.14所示。

103911_9wr1_262659.jpg103918_L1bR_262659.jpg

103955_v9bU_262659.jpg



单击列表下面的“+按钮,加入刚才建立的cocos2d-library静态库,而后单击“Add按钮,如图13.15所示。

cocos2d文件添加到创建的静态库目标程序中。选择“cocos2d-library组并单击右键,选择“Add Files toHelloWorld”,如图13.16所示。

104036_jAPw_262659.jpg



找到并选择HelloWorld项目文件夹中的libs文件夹,同时选中“Create groups for any added folders”单选钮,选择“cocos2d-library复选框,如图13.17所示。

104115_6W3Z_262659.jpg


104140_2dEL_262659.jpg


2. 重构cocos2d项目源码使之支持ARC

将不支持ARCcocos2d源码生成为静态库(Static Library)以后,接下来就是重构cocos2d项目源码使之支持ARC。很是幸运的是,Xcode的最新版本已经提供了这个功能,能够很方便地将本来不支持ARC的代码转换为支持ARC

Xcode菜单栏选择“Edit”→“Refactor”→“Convert to Objective-C ARC”,再选择要转换的目标程序,如图3-18所示。

104240_Wq9Y_262659.jpg


选择“HelloWorld项目,不要选择“cocos2d-library项目,而后单击“Check按钮,如图13.19所示。

104308_4d9z_262659.jpg


③Xcode会尝试以支持ARC的方式生成代码,并弹出一个说明性对话框提示接下来将作些什么。单击“Next按钮,会并列显示两个代码片断,能够查看到Xcode对哪些代码进行了修改。单击“Save按钮,保存这些修改,如图13.20所示。

104339_NGeY_262659.jpg


同时,Xcode还会修改HelloWorld项目中的设置信息,使项目支持Objective-C ARC(自动引用计数)。如今,代码就会以支持ARC的方式编译和运行了,如图13.21所示。

104413_bY7w_262659.jpg

————本文节选自《疯狂ios讲义(下)》

110624_Bbvc_262659.jpg
相关文章
相关标签/搜索