使用Protobuf是因?yàn)槠湫阅芎?,效率高。具體介紹可以參考谷歌官方文檔https://developers.google.com/protocol-buffers/。
下面介紹如何安裝使用Protobuf3.0及以上版本,編譯生成OC代碼,并在工程中正確使用。
安裝Protobuf
從GitHub下載代碼。https://github.com/google/protobuf。
直接clone就是最新的代碼。當(dāng)然也可以在clone時(shí)指定自己需要的版本。本文使用的是最新的代碼,即Protobuf3.3.0。
下載完成后,使用終端,切換至protobuf所在的文件路徑。
安裝前需要先確認(rèn)自己的MAC安裝了autoconf和automake。如果沒有安裝可以直接通過命令行brew install autoconf以及brew install automake進(jìn)行安裝。其中brew是指HomeBrew,如果MAC沒有安裝HomeBrew,可以通過命令行/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"進(jìn)行安裝。
準(zhǔn)備工作進(jìn)行完后,就開始安裝Protobuf。
還是先確認(rèn)在Protobuf所在的文件目錄下。然后按步驟執(zhí)行* sudo ./autogen.sh
./configuremake-
make install
此時(shí)protobuf就安裝成功了。執(zhí)行protocbuf --version就可以看到安裝的版本號了。
編譯生成OC代碼
創(chuàng)建proto文件。此處使用最簡單的例子。創(chuàng)建User.proto。里面的內(nèi)容是
syntax = "proto3";
message UserInfo {
required int64 id = 1;
required string name = 2;
}
然后使用終端切換到User.proto所在的文件夾路徑。執(zhí)行命令protocbuf User.proto --objc_out=./。以上是最簡單的生成OC代碼的命令。執(zhí)行完成后,會(huì)在當(dāng)前文件夾生成User.pbobjc.h和User.pbobjc.m兩個(gè)文件。到此生成OC代碼的工作也完成了。
工程中使用生成的代碼
在生成.h和.m文件后,把它們引入到自己的工程,如果此時(shí)直接編譯會(huì)報(bào)錯(cuò),原因是沒有引入PB的文件。解決方法有兩個(gè):
- 使用Cocoapod,在podfile中添加
pod 'Protobuf'注意大小寫。然后pod install再編譯就可以了。這個(gè)方法簡單方便。 - 如果不適用pod管理,就要把PB需要的文件手動(dòng)引入到工程。具體文件在第一步Colne的protobuf/objectivec文件夾里面。而且還得注意如果工程是ARC時(shí),要把部分PB文件置為
-fno-objc-arc。具體設(shè)置參考GitHub文檔https://github.com/google/protobuf/tree/master/objectivec
此時(shí)再次編譯就OK了。使用方法也很簡單
User *tom = [[User alloc] init];
tom.name = @"tom";
NSData *tomData = [tom data];