文字類的iOS借鑒學(xué)習(xí)知識點(diǎn)

LinkedIn開源軟件項(xiàng)目:(原文http://www.infoq.com/cn/news/2016/08/LinkedIn-RocketData-LayoutKit-UR

1廊敌、Rocket Data(只有swift版本)
Rocket Data是有持續(xù)同步層的非阻塞、不可變模型管理系統(tǒng)号涯。它可以使用任何類型的緩存愚争,可以使用簡單的API來輕松地掛接到鍵值型存儲上毒返。
從2015年早期重寫LinkedIn旗艦版應(yīng)用時(shí)開始,他們就在尋找一個(gè)可用的緩存系統(tǒng)來把內(nèi)容展現(xiàn)給用戶腊嗡,而內(nèi)容要從網(wǎng)絡(luò)上加載着倾。總的來說對這套緩存系統(tǒng)的需求是:
不可變燕少,線程安全模型卡者;
模型在內(nèi)存和緩存中一致。這樣在更新模型之后客们,所有其它實(shí)例中的這個(gè)模型都會跟著更新虎眨;
讀寫操作都是非阻塞式的蟋软;
簡單的數(shù)據(jù)淘汰策略;
在有大量模型類型嗽桩、模式和監(jiān)聽器時(shí)可以容易擴(kuò)展岳守;
自動遷移;

他們調(diào)查了當(dāng)時(shí)業(yè)界的各種現(xiàn)有解決方案碌冶,包括Core Data湿痢、URL CacheRealm扑庞,以及直接將模型寫入磁盤的方案等譬重,但找不到哪種方案可以滿足上述所有需求,或者保證不可變模型的一致性——這是他們最看重的罐氨。于是他們決定自己寫一套臀规,就是Rocket Data,它的架構(gòu)如下:

Rocket Data.png

每一個(gè)視圖控制器都有一個(gè)或多個(gè)數(shù)據(jù)提供者的引用栅隐。有兩種類型的數(shù)據(jù)提供者:正規(guī)數(shù)據(jù)提供者持有對單一模型的引用塔嬉,集合數(shù)據(jù)提供者持有對模型的有序數(shù)組的引用。兩種數(shù)據(jù)提供者都可以很容易很快速地完成數(shù)據(jù)存取租悄,因?yàn)槟P投急4嬖趦?nèi)存中谨究。
Peter Livesey這樣評價(jià)這套系統(tǒng):
有了這套緩存系統(tǒng),開發(fā)者只需一點(diǎn)點(diǎn)額外工作就可以輕松地為項(xiàng)目添加緩存了泣棋。緩存和數(shù)據(jù)提供者都是自動保持一致的胶哲。除了每周為一些模型添加模式之外,我們再也不必為遷移增加任何代碼潭辈。最重要的最鸯屿,我們程序從來不會因?yàn)镃ore Data異常而崩潰。

LayoutKit

LayoutKit是一個(gè)高性能的iOS應(yīng)用視圖布局庫把敢。
LinkedIn非常在意手機(jī)應(yīng)用的性能碾盟,可第一版的手機(jī)應(yīng)用性能卻非常不盡人意,調(diào)查后發(fā)現(xiàn)原因是主線程在運(yùn)行Auto Layout時(shí)花費(fèi)了過多時(shí)間技竟。Auto Layout是iOS提供的布局引擎,可以自動計(jì)算視圖在屏幕上的大小和位置屈藐。
據(jù)LayoutKit的開發(fā)者之一Nick Snyder榔组,他們當(dāng)初也做了許多嘗試。他們試過手工寫布局代碼联逻,但發(fā)現(xiàn)這樣會非常難以維護(hù)搓扯。所以總之需要的是在保證性能的前提下,將布局功能封裝起來的可重用模塊包归∠峭疲可是調(diào)查了現(xiàn)有方案之后,仍是發(fā)現(xiàn)雖然Auto Layout給大家造成了很大困擾,但合適的方案還是找不到换可,于是決定自主開發(fā)椎椰。與Auto Layout相比,LayoutKit的主要優(yōu)點(diǎn)有:
速度快:性能可以與專門寫的定制的布局代碼相媲美沾鳄,比Auto Layout快非常多慨飘;
異步:在后臺線程中做布局運(yùn)算,所以不會干擾與用戶的交互译荞;
聲明性的:用不可變的數(shù)據(jù)結(jié)構(gòu)聲明布局瓤的,這樣更容易開發(fā)、審核吞歼、調(diào)試和維護(hù)布局代碼圈膏;
可緩存的:布局結(jié)果都是不可變的數(shù)據(jù)結(jié)構(gòu),所以可以在后臺線程中計(jì)算并緩存篙骡,可以非常大的提升性能稽坤;

而且LayoutKit還很好用:
UIKit友好:LayoutKit生成UIView,也提供適配器來方便與UITableView和UICollectionView一起使用医增;
國際化:可以自動為從右到左的語言調(diào)整視圖慎皱;
Swift:可以在Swift應(yīng)用中使用;
成熟:單元測試覆蓋率超過90%叶骨,已經(jīng)用于最新版的LinkedIn iOS應(yīng)用茫多;

LayoutKit比Auto Layout快八倍,性能可以與專門寫的定制的布局代碼相媲美忽刽。它快在專用的布局算法天揖,而且它也不會為布局創(chuàng)建它并不需要的UIView。所以開發(fā)者可以用它隨意的去組合布局跪帝,再也不用擔(dān)心性能問題了今膊。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市伞剑,隨后出現(xiàn)的幾起案子斑唬,更是在濱河造成了極大的恐慌,老刑警劉巖黎泣,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恕刘,死亡現(xiàn)場離奇詭異,居然都是意外死亡抒倚,警方通過查閱死者的電腦和手機(jī)褐着,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來托呕,“玉大人含蓉,你說我怎么就攤上這事频敛。” “怎么了馅扣?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵斟赚,是天一觀的道長。 經(jīng)常有香客問我岂嗓,道長汁展,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任厌殉,我火速辦了婚禮食绿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘公罕。我一直安慰自己器紧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布楼眷。 她就那樣靜靜地躺著铲汪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪罐柳。 梳的紋絲不亂的頭發(fā)上掌腰,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音张吉,去河邊找鬼齿梁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛肮蛹,可吹牛的內(nèi)容都是我干的勺择。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼伦忠,長吁一口氣:“原來是場噩夢啊……” “哼省核!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起昆码,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤气忠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后赋咽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體约素,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡失尖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年典徘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了牛郑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奔则。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扫外,死狀恐怖墅冷,靈堂內(nèi)的尸體忽然破棺而出灼狰,到底是詐尸還是另有隱情,我是刑警寧澤缤骨,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布爱咬,位于F島的核電站,受9級特大地震影響绊起,放射性物質(zhì)發(fā)生泄漏精拟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一虱歪、第九天 我趴在偏房一處隱蔽的房頂上張望蜂绎。 院中可真熱鬧,春花似錦笋鄙、人聲如沸师枣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽践美。三九已至,卻和暖如春找岖,著一層夾襖步出監(jiān)牢的瞬間陨倡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工许布, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兴革,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓爹脾,卻偏偏與公主長得像帖旨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子灵妨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容