2. 在iOS(Mac OS X)中使用protobuf

2.0 构建protoc

A) 下载最新的protobuf版本

B) 依据README中的步骤依次进行

2.1 添加protobuf到工程中

A) 打开Xcode iOS 工程,点击"add file ..."选中"google"目录 (选中"copy items into destination group's folder (if needed) ")

B) 在"Build Settings"将google头文件目录(例如:/Users/XiaoKL/protobuf-2.5.0/src)添加到"Header Search Paths"中

C) 将config.h添加到工程中

D) 从"google"这个group中删除unittest

E) 从"google"这个group中删除compiler和java, 删除后的结果如R[1] 中的图所示

F) 构建工程,现在报告"tr1/unordered_map"这个文件找不到。

G) 需要做几处修改: config.h中

将"#define HASH_NAMESPACE std::tr1"替换为"#define HASH_NAMESPACE std" R[2]

将"#define HASH_MAP_H <tr1/unordered_map>"替换为"#define HASH_MAP_H <unordered_map>"

将"#define HASH_MAP_H <tr1/unordered_set>"替换为"#define HASH_MAP_H <unordered_set>"

添加libz库

到这里build通过。

2.2 使用protobuf

A) 定义.proto文件,参考R[4]

B) 生成目标文件

CPP: protoc -I=$SRC_DIR --cpp_out=$DST_DIR   $SRC_DIR/xxx.proto

Python: protoc -I=$SRC_DIR --python_out=$DST_DIR  $SRC_DIR/xxx.proto

C) 将生成的目标文件添加到工程中

2.3 protobuf在Objective-C中的难用之处

为了避免C++代码进入Objective-C代码中,给开发工作带来复杂性。一般用Objective-C类来对protobuf的C++

类进行转换。这无疑增加了很多无聊的代码,这足以让开发人员沮丧。Ref6,Ref7中提到的protobuf-objc (protobuf

的Objective-C实现)代码库时间比较久远,是不是一个好的解决方法有待进一步确认。

如果,你有更好的在Objective-C中应用protobuf的方法请告诉我。

3. Dive into Protobuf

google::protobuf

Core components of the Protocol Buffers runtime library.

This file contains classes which describe a type of protocol message.

Reference:

1. http://stackoverflow.com/questions/10277576/google-protocol-buffers-on-ios

2. http://www.kotancode.com/2012/10/14/using-google-protocol-buffers-in-objective-c-on-ios-and-the-mac/

3. http://www.giraffe-games.com/using-protobuf-protocol-buffers-on-iphone-ios/ 

4. https://developers.google.com/protocol-buffers/docs/proto

5. protobuf的Objective-C运行环境

http://www.cnblogs.com/tara/archive/2012/03/20/2407951.html

6. http://www.kotancode.com/2013/02/09/google-protocol-buffers-on-ios-and-mac-redux

7. https://github.com/regwez/protobuf-objc-iOS5

Reference:

1. http://www.pearltrees.com/davidb/protobuf/id6076142

2. https://code.google.com/p/protobuf/wiki/ThirdPartyAddOns

OpenSource.iOS.ProtobufWithObjective-C的更多相关文章

  1. 收藏的 500多个开源的Git源码

    由dkhamsing发起的Open-Source iOS Apps收集了各种开源的iOS App,并进行了详细的分类,比如游戏.社交.健康.键盘.定位.多媒体.新闻.办公.安全以及小工具类等.截至目前 ...

  2. GitHub 上有哪些完整的 iOS-App 源码值得参考

    作者:wjh2005链接:https://www.zhihu.com/question/28518265/answer/88750562来源:知乎著作权归作者所有,转载请联系作者获得授权. 1. Co ...

  3. fir.im Weekly - 工欲善其事,必先利其器

    这周为大家搜罗了一些优秀的 GitHub 资源.APP开发工具.产品UI设计资源等等,同时也有一些程序员个人成长的Tips,"软硬件兼备"也许事半功倍不只是梦! Open-Sour ...

  4. IOS-github优秀开源项目大全

    github优秀开源项目大全-iOS 前言 本文旨在搜集github上优秀的开源项目 本文搜集的项目都是用于iOS开发 本文会持续更新… 完整客户端 ioctocat github的iOS客户端,目前 ...

  5. 四个很好的开源app项目

    Open Source and the iOS App Store Today, we are open-sourcing 4 iOS apps: ThatInbox, an email client ...

  6. iOS.OpenSource.AllInOne

    Open Source Project for iOS 所有和iOS相关的Open Source Project的汇总. 功能点 开源项目   iOS Gallery RMGallery https: ...

  7. iOS.OpenSource.PopularProject

    1. Core Plot Core Plot is a plotting framework for OS X and iOS. It provides 2D visualization of dat ...

  8. 【腾讯Bugly干货分享】聊聊苹果的Bug - iOS 10 nano_free Crash

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/hnwj24xqrtOhcjEt_TaQ9w 作者:张 ...

  9. iOS面试用到的知识点和技术点--第二章

    接着第一章的继续  昨天没有更新,很抱歉 1.Socket编程 以及一些第三方框架Socket-IO GCDAsyncSocket通信框架? 1.使用系统自带的CFsocket 2.第三方Socket ...

随机推荐

  1. python之路05

    一  元组 对于元组我们可以把他看成一个不可变的列表# 元组:在()内用逗号分隔开的能够存多个值,对于元组来说列表有的一些功能它基本上都有,# 1.按索引取值(正向取+反向取):只能取# 2.切片(顾 ...

  2. 代码生成器 CodeSmith 的使用(一)

    由于在项目中经常要会用到数据库的 CRUD 操作(增.删.改.查),而且还使用的是orm 框架将数据库表名和表中的的字段映射成相应的类属性.如果把大量的时间用到手工输入数据库表中的字段,除了能练习打字 ...

  3. WebLogic 任意文件上传 远程代码执行漏洞 (CVE-2018-2894)------->>>任意文件上传检测POC

    前言: Oracle官方发布了7月份的关键补丁更新CPU(Critical Patch Update),其中针对可造成远程代码执行的高危漏洞 CVE-2018-2894 进行修复: http://ww ...

  4. MS SQL Server 定时任务实现自动备份

    SQL Server Express 版本是没有SQL 代理服务的,从而导致不能使用SQL Server的定时自动备份功能.真心感觉这就是一个坑,虽然Express是学习的版本,但是精简的也太多了.另 ...

  5. python入门-测试代码

    断言 测试函数 def get_formatted_name(first,last): """generate a neatly formattef full name& ...

  6. zabbix微信报警

    [root@LinuxS04 jiaoben]# ./weixin 联系人 baojing baojingok[root@LinuxS04 jiaoben]# pwd/usr/local/zabbix ...

  7. windows系统安装参数

    winnt32 /dudisable /s:. /unattend:winnt.sif /makelocalsource /tempdrive:C /syspart:C 以上各参数解释如下: /dud ...

  8. 模板引擎-freemarker

    Freemarker 是一款模板引擎,是一种基于模版生成静态文件的通用 工具,它是为java程序员提供的一个开发包. 可通过将Word或者Excel模板另存为xml格式,在其中修改要替换的内容. 基本 ...

  9. DELL服务器iDRAC相关设置

    iDRAC又称为Integrated Dell Remote Access Controller,也就是集成戴尔远程控制卡 iDRAC卡相当于是附加在服务器上的一台小电脑,通过与服务器主板上的管理芯片 ...

  10. cobbler配置解析

    1.Cobbler命令说明: 命令名称 命令用途 cobbler check 检查cobbler配置 cobbler list 列出所有的cobbler元素 cobbler report 列出元素的详 ...