iOS面試題:App啟動(dòng)過(guò)慢,你可能想到的因素有哪些?

1. App啟動(dòng)過(guò)程

  1. 解析Info.plist
  • 加載相關(guān)信息,例如如閃屏
  • 沙箱建立、權(quán)限檢查
  1. Mach-O加載
  • 如果是胖二進(jìn)制文件,尋找合適當(dāng)前CPU類別的部分
  • 加載所有依賴的Mach-O文件(遞歸調(diào)用Mach-O加載的方法)
  • 定位內(nèi)部、外部指針引用,例如字符串、函數(shù)等
  • 執(zhí)行聲明為attribute((constructor))的C函數(shù)
  • 加載類擴(kuò)展(Category)中的方法
  • C++靜態(tài)對(duì)象加載、調(diào)用ObjC的 +load 函數(shù)
  1. 程序執(zhí)行
  • 調(diào)用main()
  • 調(diào)用UIApplicationMain()
  • 調(diào)用applicationWillFinishLaunching

2、影響啟動(dòng)性能的因素

  1. main()函數(shù)之前耗時(shí)的影響因素
  • 動(dòng)態(tài)庫(kù)加載越多,啟動(dòng)越慢。
  • ObjC類越多,啟動(dòng)越慢
  • C的constructor函數(shù)越多,啟動(dòng)越慢
  • C++靜態(tài)對(duì)象越多,啟動(dòng)越慢
  • ObjC的+load越多,啟動(dòng)越慢
  1. main()函數(shù)之后耗時(shí)的影響因素
  • 執(zhí)行main()函數(shù)的耗時(shí)
  • 執(zhí)行applicationWillFinishLaunching的耗時(shí)
  • rootViewController及其childViewController的加載、view及其subviews的加載

另外參考一下今日頭條的啟動(dòng)優(yōu)化方案

針對(duì)于今日頭條這個(gè)App我們可以優(yōu)化的點(diǎn)如下:

  • 純代碼方式而不是storyboard加載首頁(yè)UI。
  • 對(duì)didFinishLaunching里的函數(shù)考慮能否挖掘可以延遲加載或者懶加載,需要與各個(gè)業(yè)務(wù)方pm和rd共同check 對(duì)于一些已經(jīng)下線的業(yè)務(wù),刪減冗余代碼。
  • 對(duì)于一些與UI展示無(wú)關(guān)的業(yè)務(wù),如微博認(rèn)證過(guò)期檢查、圖片最大緩存空間設(shè)置等做延遲加載。
    對(duì)實(shí)現(xiàn)了+load()方法的類進(jìn)行分析,盡量將load里的代碼延后調(diào)用。
  • 上面統(tǒng)計(jì)數(shù)據(jù)顯示展示feed的導(dǎo)航控制器頁(yè)面(NewsListViewController)比較耗時(shí),對(duì)于viewDidLoad以及viewWillAppear方法中盡量去嘗試少做,晚做,不做。

更多:iOS面試題合集

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

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

  • 背景 一個(gè)項(xiàng)目做的時(shí)間長(zhǎng)了,啟動(dòng)流程往往容易雜亂,庫(kù)也用的越來(lái)越多,APP的啟動(dòng)時(shí)間也會(huì)慢慢變長(zhǎng)。本次將針對(duì)iOS...
    醬油瓶2閱讀 3,636評(píng)論 0 12
  • 如何優(yōu)化iOS App的啟動(dòng)性能 第一部分科普了一些和App啟動(dòng)性能相關(guān)的前置知識(shí)第二部分主要講如何定制啟動(dòng)性能的...
    百事小武閱讀 699評(píng)論 0 2
  • 前言 最近和公司iOS小組伙伴討論準(zhǔn)備對(duì)各自手上的產(chǎn)品做一次優(yōu)化,確實(shí)對(duì)比很多產(chǎn)品來(lái)看,(支付寶,淘寶,幾乎1~2...
    Cingjin閱讀 1,873評(píng)論 0 7
  • 一排排,一列列 都一樣 短松也哀挽悲傷 不見生長(zhǎng) 最終的歸宿就在這一小方 天地之間再無(wú)牽掛的一小方 火苗變得異常玄...
    斕喬閱讀 435評(píng)論 0 6
  • 流蘇:一直不求甚解地喜歡尼采的作品,感覺他的作品像一句句箴言,很有趣味。但讀海德格爾的《尼采》,卻覺得有些乏味晦澀...
    雨幕流蘇閱讀 663評(píng)論 2 4

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