移動(dòng)開發(fā)每周閱讀清單:iOS多線程安全、構(gòu)建Android MVVM應(yīng)用框架
(我進(jìn)去瞅了一眼又退出了。)
『移動(dòng)開發(fā)每周閱讀清單』第三十七期與大家見面了,上周支付寶來搶頭條了,我想事情變成這樣不是他們的本意,只能說產(chǎn)品經(jīng)理還是很重要啊。
提示:點(diǎn)擊文末閱讀原文可打開帶鏈接的版本。
提示2:文末有小福利~
新聞
Apple 停止了 AirPort 產(chǎn)品線開發(fā)
根據(jù)彭博社報(bào)道,Apple 已經(jīng)停止包括 AirPort Express、AirPort Extreme 等無線路由產(chǎn)品的開發(fā)。Apple 希望可以將人手用在帶來收益更高的下一代蘋果產(chǎn)品中。不過并不清楚蘋果會(huì)在什么時(shí)間點(diǎn)停止生產(chǎn)這些產(chǎn)品,目前這些產(chǎn)品還可以買到,如果你想要買一款留做紀(jì)念,可能要抓緊了。
安卓7.1開發(fā)者預(yù)覽版Beta2放出:更接近完全體
11月23日消息,谷歌剛剛推出了安卓7.1第二個(gè)開發(fā)者預(yù)覽版,這也將是安卓7.1***一個(gè)預(yù)覽版,之后谷歌會(huì)推出安卓7.1.1正式版。安卓7.1開發(fā)者預(yù)覽版支持Nexus5X、Nexus6P、Nexus9和Pixel C,據(jù)谷歌表示,安卓7.1開發(fā)者預(yù)覽版2在系統(tǒng)穩(wěn)定性和UI方面接近“完全體”。
教程
iOS
iOS多線程到底不安全在哪里?
iOS 多線程安全的概念在很多地方都會(huì)遇到,為什么不安全,不安全又該怎么去定義,其實(shí)是個(gè)值得深究的話題。共享狀態(tài),多線程共同訪問某個(gè)對(duì)象的 property ,在 iOS 編程里是很普遍的使用場景。本文從 Property 的多線程安全說起,分享了對(duì) memory layout 和原子性的理解,并解釋了 atomic 和 nonatomic 的區(qū)別。
Swift: UserDefaults protocol
一篇類似SwiftyUserDefaults框架的分享,介紹了如何在 Swift 中合理的使用 protocol 場景。
APP 緩存數(shù)據(jù)線程安全問題探討
本文探討了在多線程下如何處理 Cache 的問題,分享了三種解決方案:加鎖、分線程 cache 、 數(shù)據(jù)不可變。
預(yù)加載與智能預(yù)加載
本文介紹了 iOS 中幾種預(yù)加載的方案,以及 ASDK 中是如何處理預(yù)加載的。
Android
Redex初探與Interdex:Andorid冷啟動(dòng)優(yōu)化
早在去年10月份,facebook就發(fā)布了介紹redex的文章,這個(gè)據(jù)說可以直接對(duì)apk做處理,既提高啟動(dòng)性能,又可減少安裝包的利器讓安卓開發(fā)者們都心動(dòng)不已。直到今年4月,redex終于開源了,作者***時(shí)間對(duì)redex做了研究。雖然由于坑多,最終沒有接入到項(xiàng)目構(gòu)建中,但受Interdex啟發(fā),在應(yīng)用冷啟動(dòng)速度優(yōu)化方面有了新的收獲。
使用Buck構(gòu)建Android工程
Buck構(gòu)建工具,其實(shí)早已不是什么新奇的事物,它是一款由Facebook開發(fā)、維護(hù)并開源的性能強(qiáng)大的構(gòu)建工具。不僅在Facebook的全系列產(chǎn)品中廣泛應(yīng)用,而且在國內(nèi)的微信團(tuán)隊(duì)也有使用。其構(gòu)建的目標(biāo)代碼相當(dāng)廣泛,且對(duì)Android工程有所優(yōu)化,核心思想是多任務(wù)并發(fā)的構(gòu)建策略,充分發(fā)揮多核優(yōu)勢,Buck可以極大的加快Android工程全量構(gòu)建的速度,是目前Android全量構(gòu)建策略中的不二選擇。
如何構(gòu)建Android MVVM應(yīng)用框架
說到Android MVVM,相信大家都會(huì)想到Google 2015年推出的DataBinding框架。然而兩者的概念是不一樣的,不能混為一談。MVVM是一種架構(gòu)模式,而DataBinding是一個(gè)實(shí)現(xiàn)數(shù)據(jù)和UI綁定的框架,是構(gòu)建MVVM模式的一個(gè)工具。那么在Android中是如何通過DataBinding去構(gòu)建MVVM的應(yīng)用框架的?View、ViewModel、Model每一層的職責(zé)如何?它們之間聯(lián)系怎樣、分工如何、代碼應(yīng)該如何設(shè)計(jì)?本文給出了答案。
Writing-Better-Adapters 譯文及示例
對(duì)于Android開發(fā)者來說,實(shí)現(xiàn)Adapter是最頻繁的工作之一。Adapter是所有列表的基本,而列表也是很多App的基本組成。編寫一個(gè)列表控件的方法大多數(shù)時(shí)間都是一樣的:用一個(gè)綁定了Adapter的View來展示數(shù)據(jù)。然而一直這樣會(huì)讓我們對(duì)自己編寫的代碼變得盲目或者說我們一直在重復(fù)創(chuàng)造低級(jí)代碼。閱讀文章,看看作者是如何提高Adapter代碼質(zhì)量的。
開源項(xiàng)目
iOS
Apple 開源 macOS 10.12 Sierra Darwin 代碼
Apple 公布了 macOS 10.12 Sierra 的開源 Darwin 代碼,代碼包含了 macOS、iOS、watchOS 和 tvOS 基于的 Unix 組件的核心集合,包括驅(qū)動(dòng)程序和未加密的內(nèi)核及其 BSD 部分。
RocketData
LinkedIn 的數(shù)據(jù)緩存框架,針對(duì)不可變Model。
Swimat
快捷對(duì)代碼排版的 Xcode Extensions 。
StatefulViewController
帶狀態(tài) ViewController ,方便快速添加各種狀態(tài)視圖。
Android
update
一款清晰靈活簡單易用的Android應(yīng)用更新庫。
blurkit-android
這是一款使用簡單的模糊工具,可以通過XML來配置。
工作
有招聘移動(dòng)開發(fā)工程師需求可以給我發(fā)郵件:amos@infoq.com,附上公司名稱介紹、招聘需求、待遇、聯(lián)系方式等等。我會(huì)選擇一些放在這里。
Android&iOS研發(fā)工程師 by QQ
坐標(biāo)深圳。負(fù)責(zé)QQ上視頻直播、短視頻分享和QQ群相關(guān)的開發(fā)工作,歡迎對(duì)新技術(shù)有熱情并好學(xué)的同學(xué)。簡歷發(fā)送至 cppgohan@qq.com
企業(yè)產(chǎn)品iOS開發(fā)工程師 by QQ
坐標(biāo)上海。負(fù)責(zé)企點(diǎn)、企業(yè)QQ、手機(jī)QQ iOS平臺(tái)的企業(yè)功能開發(fā)工作。要求3年以上iOS平臺(tái)軟件開發(fā)經(jīng)驗(yàn)。簡歷發(fā)送至 sunnylyme@163.com
活動(dòng)
宣傳社區(qū)辦的一些移動(dòng)相關(guān)的線下活動(dòng),有想放在這里的歡迎和我打招呼,友情幫宣傳。
ArchSummit全球架構(gòu)師峰會(huì)
地點(diǎn)北京。ArchSummit秉承“實(shí)踐***、案例為主”的原則,展示新技術(shù)在行業(yè)應(yīng)用中的***實(shí)踐,技術(shù)在企業(yè)轉(zhuǎn)型中的加速作用,幫助企業(yè)技術(shù)管理者、CTO、架構(gòu)師做好技術(shù)選型、技術(shù)團(tuán)隊(duì)組建與管理,并確立技術(shù)對(duì)于產(chǎn)品和業(yè)務(wù)的關(guān)鍵作用。
中國技術(shù)開放日廣州站
12月9日廣州舉行。主題為移動(dòng)開發(fā)前沿。我們邀請(qǐng)了來自騰訊、阿里、百度、唯品會(huì)的技術(shù)專家前來分享一線開發(fā)實(shí)踐。