ios编译的一些细节

一、使用arc必须用LLVM3.0,LLVM3.0多了一个给力的新东西,叫Automatic Reference Counting。开启这个选项之后,LLVM会在编译阶段自动帮开发者完成“手动”的内存管理。同时,所有代码中的retain,release和autorelease会被标记成错误,也就是说,我们完全不需要用以前头蛋俱疼的方式管理内存了。  ARC不仅可以修复错误,还能增强性能。根据WWDC 2011大会的介绍,retain/release快了2.5倍,@autoreleasepool快了6倍,objc_msgSend快了33%。不需要arc的文件,加入“-fno-objc-arc”编译选项即可。


二、不用arc时,编译器用gcc或llvm3.0都可


三、引入了c++静态库,相关使用静态库的.m文件都要改为.mm文件,包括appdelegate.m和main.m


四、不要忘记配置header search paths


五、如果引入的静态库中有category,在Other linker flag中加入-ObjC和-all_load


-all_load Loads all members of static archive libraries.

-ObjC Loads all members of static archive libraries that implement an Objective-C class or category.

-force_load (path_to_archive) Loads all members of the specified static archive library. Note: -all_load forces all members of all archives to be loaded. This option allows you to target a specific archive.

翻译过来就是-all_load就是会加载静态库文件中的所有成员,-ObjC就是会加载静态库文件中实现一个类或者分类的所有成员,-force_load(包的路径)就是会加载指定路径的静态库文件中的所有成员。所以对于使用runtime时候的反射调用的方法应该使用这三个中的一个进行link,以保证所有的类都可以加载到内存中供程序动态调用

编译 iOS 上的 jsoncpp 可以按照以下步骤进行: 1. 首先,你需要从 jsoncpp 的官方源代码仓库中获取最新的代码。你可以通过 Git 克隆仓库、下载 ZIP 压缩文件或者使用其他任何你习惯的方式获取代码。 2. 解压下载的代码文件,并进入解压后的目录。 3. 在终端中,进入到 jsoncpp 的目录,并执行以下命令: ``` python amalgamate.py ``` 这个命令将会根据你的平台生成一个包含所有源代码的单个文件 `jsoncpp.cpp`。 4. 使用 Xcode 打开一个新的 iOS 项目。在项目中,可以创建一个单独的目录来存放 jsoncpp 的源代码。 5. 将 `jsoncpp.cpp` 文件和 `json` 目录拖拽到项目中,确保勾选 "Copy items if needed" 选项。 6. 在项目的 "Target" 设置中,找到 "Build Phases" 选项卡并展开 "Compile Sources"。 7. 确保 `jsoncpp.cpp` 文件被添加到 "Compile Sources" 中。 8. 添加必要的系统库。在项目的 "Target" 设置中,找到 "Build Phases" 选项卡并展开 "Link Binary With Libraries"。 9. 点击 "+" 按钮,然后搜索并添加以下系统库: - libz.tbd - libc++.tbd 10. 现在,你可以在项目的代码中导入并使用 jsoncpp 了。使用 `#include "json.h"` 来引入头文件,并在需要的地方使用相关的 jsoncpp 函数和类。 11. 使用 Xcode 编译并运行你的 iOS 项目。如果一切正常,你应该可以成功地使用 jsoncpp。 以上是编译 iOS 上的 jsoncpp 的一般步骤。具体细节可能会因为你的项目设置或版本差异而有所调整,但是大致的思路是相同的。希望这些指导能对你有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值