原创 iOS開發進階:啓動優化及二進制重排初探

應用的(冷)啓動過程主要分爲兩個階段:pre-main階段、從main到首屏加載完成的階段。 一、pre-main階段優化 這個階段主要是做動態庫的加載、地址的綁定、OC註冊和相關初始化的工作。我們可以在scheme->Argument

原创 iOS開發進階:三方源碼解讀

一、YYMemoryCache的源碼解讀 YYKit項目 YYMemoryCache是用來做內存管理的類,他支持設置緩存對象的個數、最大佔用內存大小、時間等限制來達到較好的存儲狀態,他內部支持通過LRU淘汰策略來清理低頻使用的數據。

原创 iOS開發進階:性能優化與穩定性優化實踐

優化實踐主要包括UI界面的優化、穩定性的優化兩部分,是在開發過程中對於相關問題的認知和解決方案,僅代表個人觀點,如有疑問,歡迎一起探討學習。 一、UI界面優化 在渲染流程中GPU、CPU、顯示器協同工作。CPU計算好顯示的內容(包括

原创 iOS開發進階 · 合集

生活不可能像你想象得那麼好,但也不會像你想象得那麼糟。我覺得人的脆弱和堅強都超乎自己的想象。有時,我可能脆弱得一句話就淚流滿面,有時,也發現自己咬着牙走了很長的路。 iOS開發進階:alloc、init、new iOS開發進階:類cla

原创 iOS開發進階:工程組件化實踐

當一個App聚合的業務較多時,或者團隊開發成員較多的時候,實際開發中總會遇到一些問題:比如提交的代碼衝突了,比如相同的功能寫重複了,比如代碼之間相互引用啊,那麼工程組件化就很有必要。 那麼組件化到底可以幫助我們解決什麼問題呢?1.模塊間

原创 Flutter開發進階 · 合集

生活不可能像你想象得那麼好,但也不會像你想象得那麼糟。我覺得人的脆弱和堅強都超乎自己的想象。有時,我可能脆弱得一句話就淚流滿面,有時,也發現自己咬着牙走了很長的路。 Flutter開發進階:環境搭建 Flutter開發進階:項目創建及W

原创 Flutter開發進階:環境搭建

一、flutter安裝與配置 1.下載macOS版本 flutter地址:https://flutter.io/sdk-archive/#macos 2.配置flutter環境 #Flutter 鏡像配置 export PUB_HOS

原创 Flutter開發進階:項目創建及Widget佈局

flutter是一款移動應用跨平臺框架,使用Dart語言編寫的一份代碼可以生成iOS和Android兩個高性能、高保真的應用程序。Flutter不借助原生的渲染能力,而是自己實現了一套與Android和iOS一樣的渲染原理,從而在性能上與

原创 Flutter開發進階:Channel 1.初始化路由傳值 2.MethodChannel通信 3.Channel 4.Flutter引擎源碼

1.初始化路由傳值 //ios let vc = FlutterViewController() vc.setInitialRoute("openCompany")//設置爲one self.navigatonController?.pre

原创 iOS開發進階:自動釋放池的實現原理分析

在MRC下如下代碼: NSObject *obj = [[NSObject alloc] init] autorelease]; 通過xcrun命令可以轉換成cpp源代碼,在代碼中包含__AtAutoreleasePool結構體如下: /

原创 iOS開發進階:RunLoop相關分析總結

什麼是Runloop? Runloop是通過內部維護的事件循環來對事件和消息進行管理的一種機制。當沒有消息需要處理的時候,線程進入休眠以避免佔用資源,有消息需要處理時,立即被喚醒。 runloop循環不是單獨的do-while循環,而是發生

原创 iOS開發進階:retain、release、dealloc

一、Tagged Pointer細節探究 蘋果爲了提高執行效率和節省內存,引入了Tagged Pointer的概念,對於64位程序來說可以達到3倍的訪問速度和100多倍的創建銷燬的速度。支持Tagged Pointer的類型以某種方式創建

原创 iOS開發進階:RunLoop

什麼是Runloop? Runloop是通過內部維護的事件循環來對事件和消息進行管理的一種機制。當沒有消息需要處理的時候,線程進入休眠以避免佔用資源,有消息需要處理時,立即被喚醒。 runloop循環不是單獨的do-while循環,而是發生

原创 iOS開發進階:block的分析及循環引用的解決方案

iOS開發中block隨處可見,什麼是block呢?block是一個匿名函數,是一個代碼塊,把代碼放在這個代碼塊中,在需要使用的時候進行調用。block會封裝函數以及函數的調用環境: -封裝函數:是指block會把block內部的參數返回

原创 iOS開發進階:鎖的分析

我們在使用多線程的時候,同一時刻可能會有多個線程訪問同一內存的內容,這樣就很容易引發數據混亂(數據安全)的問題。爲了減少或者避免這種問題的出現,我們需要使用鎖來保證統一時刻只有一個線程訪問這一塊內存。鎖可以讓數據的訪問更安全。 我們常見