原创 提升用戶愉悅感的潤滑劑-看SDWebImage本地緩存結構設計 總結

手機應用發展到今天,用戶的體驗至關重要,有時決定着應用產品的生死,比如滑動一個商品列表時,用戶自然地希望列表的滑動跟隨手指,如絲般順滑,如果卡頓,不耐煩的用戶就會點退出按鈕,商品也就失去了展示機會; 而當一個用戶發現自己裝了某個APP後流量

原创 APP組件化實踐(一):通信方案的選擇 小結

項目發展到一定階段,業務線增多,團隊龐大,需求變更加速,組件化變成一種“剛需”。 組件化最早在一些大廠被提出,如淘寶、蘑菇街、滴滴等,都有各自的組件化實踐, 這些實踐滿足了各個平臺的業務發展需要,同時也讓組件化的定義越發模糊,本文從實踐角

原创 深入理解 Swift 可選鏈 (國外優秀教程精譯)

使用可選值有時會讓人感到有點笨拙,所有的解包和檢查會變得如此繁重,以至於會讓你想要丟幾個感嘆號上去強制解包,好讓你能繼續工作下去。但是請小心:如果你強制解包一個沒有值的可選值,你的代碼就崩了。 Swift 有兩個技術來幫助你減少代碼的複雜

原创 Swift 的泛型與 Any

在 Swift 中,泛型 和 Any 都能用於定義接受不同類型的參數,在一些代碼中,會同時定義 foo(a: T, b: Any),這時真是一臉黑人問號。本文來探究一下泛型 和 Any 的具體區別,先說結論: 泛型的類型檢查由編譯器負責,

原创 國外優秀教程精譯 | Swift 可選值詳解(下)

如果看完 Swift 可選值詳解(上)後,你對可選值還是有些迷惑,甚至一頭霧水,那麼我們來換一種方式來解釋。 看下面的方法: func yearAlbumReleased(name: String) -> Int { if nam

原创 國外優秀教程精譯 | Swift 可選值詳解(上)

英文原文 Swift 是一門非常安全的語言,這裏指的是 Swift 在防止代碼意外崩潰方面做了很多努力。 代碼崩潰的一個常見原因是試圖使用一個已損壞的或不存在的數據。舉例來說,假設有一個方法: func getHaterStatus()

原创 Swift 可選鏈 (翻譯)

使用可選值有時會讓人感到有點笨拙,所有的解包和檢查會變得如此繁重,以至於會讓你想要丟幾個感嘆號上去強制解包,好讓你能繼續工作下去。但是請小心:如果你強制解包一個沒有值的可選值,你的代碼就崩了。 Swift 有兩個技術來幫助你減少代碼的複雜

原创 小M學設計模式:組合模式在TableView中的妙用

徒弟小M接到一個私活,給朋友的川菜館做個訂餐APP,在開發點菜菜單時,遇到了困難。 一開始他是這麼做的,將菜單項放入一個數組作爲TableView的數據源: ["宮保雞丁", "乾燒魚", "回鍋肉", "麻婆豆腐", "家常豆腐", "黃

原创 UITabBarController 和 UINavigationController 的組合使用

標籤控制器和導航控制器都是容器控制器,都能容納其它控制器,決定子控制器的生命週期,當兩個容器控制器相互組合時,就沒有單獨使用它們時那麼隨心所欲了, 組合兩個容器控制器時,要注意組合的順序,比如在設置導航欄標題時,不注意父容器的順序就會出現設

原创 APP組件化實踐(二):組件劃分

上篇分析了組件的通信方案,本篇繼續來討論如何將項目組件化。 一個組件化的項目,分以下三層: 第一層:殼工程 殼工程就是最終交付項目(也可以是臨時的體驗包)的主工程,負責各個組件的初始化,並將它們組裝在一起,管理整個項目的生命週期。 第

原创 APP組件化實踐(一):通信方案的選擇

項目發展到一定階段,業務線增多,團隊龐大,需求變更加速,組件化變成一種“剛需”。 組件化最早在一些大廠被提出,如淘寶、蘑菇街、滴滴等,都有各自的組件化實踐, 這些實踐滿足了各個平臺的業務發展需要,同時也讓組件化的定義越發模糊,本文從實踐角

原创 提升用戶愉悅感的潤滑劑-本地緩存

手機應用發展到今天,用戶的體驗至關重要,有時決定着應用產品的生死,比如滑動一個商品列表時,用戶自然地希望列表的滑動跟隨手指,如絲般順滑,如果卡頓,不耐煩的用戶就會點退出按鈕,商品也就失去了展示機會; 而當一個用戶發現自己裝了某個APP後流量

原创 源碼啓示錄 | 如何使用NSURLSession下載海量圖片

無論是社交類的網絡相冊、電商類的商品清單、還是電子書城的書架等應用場景,大量圖片的下載都是必備的應用需求。 在iOS系統中,相比 NSURLConnection ,NSURLSession 提供了一套更優秀的網絡處理解決方案,並且使用的接

原创 Swift-數組“運算”彙總

兩個數組“相加”——合併數組 var intItems1 = [1, 2, 3, 4] var intItems2 = [1, 2, 3, 4] var intsItemsAll = intItems1 + intItems2 intsIt

原创 容易忽視的性能殺手:TableView刷新優化特例

在TableView優化檢查清單一篇中,例出了TableView優化常見的一些入手點,本篇將給出一個在特定效果下,會影響TableView 刷新效率的一種情形及優化方法,在你決定用複雜方法優化TableView時,提前排除這種可能。 簡單的