编译配置
1.从https://github.com/google/protobuf/releases下载protobuf-objectivec-3.0.0-beta-2.tar.gz
2.打开终端,cd进入到protobuf-objectivec-3.0.0-beta-2.tar.gz所在目录。tar -zxvf 解压到当前目录下。
3.cd 到解压后的目录,进入protobuf-3.0.0-beta-2
4 ./autogen.sh
5 ./configure
6. make
7 make install
8 之后会在protobuf-3.0.0-beta-2/src下生成一个protoc
9 创建一个Msgproto.proto文件,把它放到protobuf-3.0.0-beta-2/src目录下
10 在protobuf-3.0.0-beta-2 目录下新建一个protoData的文件夹,cd到protobuf-3.0.0-beta-2 目录,然后在终端输入src/protoc --proto_path=src --objc_out=protoData src/Msgproto.proto
使用cocoapod添加工程依赖库
1.在终端cd进入项目文件夹(cd 然后把项目文件夹拖入)
2.创建podfile:输入vim podfile ,打开文件后输入i进入编辑状态
3.platform:ios,’8.0’
target ‘MyApp’ do
pod 'Protobuf', ‘3.0.0-beta-2'(版本号)
end
里面的 MyApp 记得替换为自己工程里面的target名
ps:我升级了cocoapods的版本1.0.0.beta.4,因此创建podfile的时候就要改为现在这种格式了。
按ESC取消编辑状态,输入:wq回车推出
4.在终端输入pod install执行。完成后退出工程,再次进入就会看到PB依赖库了。
ProtocolBuffer for Objective-C 运行环境配置及使用 - 简书
有一个要说明的:(目前尚不清楚解决办法)
先导入其他第三方静态库.a .h,再添加pbbuf的cocoapod依赖,pod install 会报警告,猜测是因为导入其他第三方库的时候手动设置过aheader path和library path
更新:感觉这是cocoapods的一个bug,这是解决办法
使用protobuffer
.proto文件对应生成的.h 和.m文件都是MRC的,引入ARC工程中要把这文件的ARC禁用。添加-fno-objc-arc
把.h .m文件添加到工程中并且#import .h文件即可使用
//创建对象
Source* s = [Source new];
s.name = @"this is a test";
s.id_p = @"1";
//序列化为Data
NSData *data = [s data];
NSLog(@"%@",data);
//反序列化为对象
Source *s2 = [Source parseFromData:data error:NULL];
NSLog(@"name:%@ id:%@",s2.name,s2.id_p);