iOS 中使用Protobuf(PB)

用途

protocolbuffer(以下簡稱PB)是google 的一種數(shù)據(jù)交換的格式,它獨(dú)立于語言,獨(dú)立于平臺。google 提供了多種語言的實現(xiàn):java、c++、go 和 python,每一種實現(xiàn)都包含了相應(yīng)語言的編譯器以及庫文件。由于它是一種二進(jìn)制的格式,比使用 xml 進(jìn)行數(shù)據(jù)交換快許多??梢园阉糜诜植际綉?yīng)用之間的數(shù)據(jù)通信或者異構(gòu)環(huán)境下的數(shù)據(jù)交換。作為一種效率和兼容性都很優(yōu)秀的二進(jìn)制數(shù)據(jù)傳輸格式,可以用于諸如網(wǎng)絡(luò)傳輸、配置文件、數(shù)據(jù)存儲等諸多領(lǐng)域(以上是復(fù)制的百度....一般都是用在網(wǎng)絡(luò)通訊時序列化反序列化用的)。
1.首先你得知道要用到brew 干啥的可以去這看看
打開終端 萬一你已經(jīng)安了呢 輸入:

brew -v

結(jié)果如果是這個 那就是沒安 終端都不知道你說的是啥 哈哈

-bash: brew: command not found

breworg.png

人家寫的很明白了 終端輸入這個

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

終端會往下走。。。 到箭頭這兩步時會停 第一個停你就得按return鍵 按其他鍵就終止了(那英文就那么寫的 abort這詞真形象流產(chǎn) 夭折.... ) 第二個讓你輸入你電腦的密碼


停.png

看到這個你就成功了


成功安裝

在看看版本就有了吧

brew -v
Homebrew 1.1.12

2.該安裝所需的東西了 一個個的安就好

brew install automake

brew install libtool

brew install protobuf

3.該安裝oc語言所需的東西了google/protobuf 地址下載這個文件夾

下載.png

在下面找到oc版本的安裝鏈接


Screenshot 2017-04-06_16-16-20.png

安裝方式在這 就是運(yùn)行下載好的full_mac_build.sh

安裝方法.png

直接找到文件 拖到終端 回車 就開始安裝了


full.png

終端安裝


安裝.png

這個過程我彈出了這個 點(diǎn)了好不影響使用
我彈出這個.png

安裝過程不算長就是滾的東西比較多......


Screenshot 2017-04-06_16-41-16.png

4.安裝完成測試一下把Protocol Buffers 轉(zhuǎn)成oc可用的文件
先找個.proto文件 下載的文件夾中有這個一個文件 就用它了把他轉(zhuǎn)成oc可用的文件


pb.png

在桌面上建一個文件夾就叫pb吧 把這.proto文件拷貝進(jìn)去(我桌面就這么干凈)


pb 文件夾.png

在終端cd到項目文件夾 接著終端輸入下面這行 ./是你本身文件的名字 out=后面是你輸出文件路徑
protoc ./addressbook.proto --objc_out=./

可以看到生成的oc .h 和.m文件了

生成的oc可用文件.png

5.到現(xiàn)在應(yīng)該是安裝完了 來使用一下吧 使用cocoapods 導(dǎo)入 你也可以搜一下版本 安一個3.0以上的版本就好(3.0才正式支持oc)

pod 'Protobuf'

新建個測試項目吧 把剛才生成的.m和.h拖入項目中

Screenshot 2017-04-06_18-20-49.png

編譯會報錯 因為不支持ARC環(huán)境 官方說明 需把關(guān)閉.m文件的ARC 加上這個:-fno-objc-arc


官方說明.png
取消ARC.png

編譯一下 這回應(yīng)該是成功的了 沒有錯誤 該使用了
點(diǎn)開看生成的.h文件 能看出來這里有一個類 類名是Person 有name ,email屬性什么的


文件內(nèi)容.png

就序列化這份Person類對象了 導(dǎo)入.h頭文件 代碼如下

#import "ViewController.h"
#import "Addressbook.pbobjc.h"

@interface ViewController ()
@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    Person *person1 = [[Person alloc] init];
    person1.name = @"庫里";
    person1.email = @"403three@icloud.com";
    //序列化
    NSData *data = [person1 data];
    NSLog(@"%@", data);
    //反序列化
    Person *person2 = [Person parseFromData:data error:nil];
    NSLog(@"person2%@", person2);
}

看下結(jié)果 第一個打印的是16進(jìn)制的文件流 第二個打印的是反序列化的對象
說明我們的文件是可用的 可以實現(xiàn)PB內(nèi)對象的序列化以及反序列化

結(jié)果.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,018評論 4 61
  • 1,NSObject中description屬性的意義,它可以重寫嗎?答案:每當(dāng) NSLog(@"")函數(shù)中出現(xiàn) ...
    eightzg閱讀 4,331評論 2 19
  • OC的理解與特性 OC作為一門面向?qū)ο蟮恼Z言,自然具有面向?qū)ο蟮恼Z言特性:封裝、繼承、多態(tài)。它既具有靜態(tài)語言的特性...
    小樓昨夜有風(fēng)雨閱讀 617評論 0 0
  • 原文 序言 目 前形勢,參加到iOS隊伍的人是越來越多,甚至已經(jīng)到供過于求了。今年,找過工作人可能會更深刻地體會到...
    星空下的菜地閱讀 3,176評論 3 42
  • 快,是當(dāng)今時代大潮下應(yīng)對各種狀況的首選。網(wǎng)絡(luò)科技公司通過快,盡早發(fā)布新產(chǎn)品抓住目標(biāo)群體的視野,再通過不斷的產(chǎn)...
    四點(diǎn)零一分閱讀 189評論 0 0

友情鏈接更多精彩內(nèi)容