日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

iOS App 启动性能优化

發(fā)布時(shí)間:2024/4/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS App 启动性能优化 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

本文來(lái)自于騰訊Bugly公眾號(hào)(weixinBugly),未經(jīng)作者同意,請(qǐng)勿轉(zhuǎn)載,原文地址:https://mp.weixin.qq.com/s/Kf3EbDIUuf0aWVT-UCEmbA

作者:samsonxu

導(dǎo)語(yǔ)

本文介紹了如何優(yōu)化iOS App的啟動(dòng)性能。

本文分為四個(gè)部分:

  • 第一部分科普了一些和App啟動(dòng)性能相關(guān)的前置知識(shí)
  • 第二部分主要講如何定制啟動(dòng)性能的優(yōu)化目標(biāo)
  • 第三部分通過(guò)在WiFi管家這個(gè)具體項(xiàng)目的優(yōu)化過(guò)程,分享一些有用的經(jīng)驗(yàn)
  • 第四部分是關(guān)鍵點(diǎn)的總結(jié)。

【第一部分】一些小科普

因?yàn)槠南拗?#xff0c;沒(méi)有辦法很詳盡的說(shuō)明一些原理性的東西,只是方便大家了解哪些事情可能跟啟動(dòng)性能有關(guān)。同時(shí),內(nèi)容相對(duì)也比較入門,大神們請(qǐng)?zhí)^(guò)這一部分。

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

  • 解析Info.plist
    • 加載相關(guān)信息,例如如閃屏
    • 沙箱建立、權(quán)限檢查
  • 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ù)
  • 程序執(zhí)行
  • 調(diào)用main()
  • 調(diào)用UIApplicationMain()
  • 調(diào)用applicationWillFinishLaunching

2. 如何測(cè)量啟動(dòng)過(guò)程耗時(shí)

冷啟動(dòng)比熱啟動(dòng)重要

當(dāng)用戶按下home鍵的時(shí)候,iOS的App并不會(huì)馬上被kill掉,還會(huì)繼續(xù)存活若干時(shí)間。理想情況下,用戶點(diǎn)擊App的圖標(biāo)再次回來(lái)的時(shí)候,App幾乎不需要做什么,就可以還原到退出前的狀態(tài),繼續(xù)為用戶服務(wù)。這種持續(xù)存活的情況下啟動(dòng)App,我們稱為熱啟動(dòng),相對(duì)而言冷啟動(dòng)就是App被kill掉以后一切從頭開始啟動(dòng)的過(guò)程。我們這里只討論App冷啟動(dòng)的情況。

main()函數(shù)之前

在不越獄的情況下,以往很難精確的測(cè)量在main()函數(shù)之前的啟動(dòng)耗時(shí),因而我們也往往容易忽略掉這部分?jǐn)?shù)據(jù)。小型App確實(shí)不需要太過(guò)關(guān)注這部分。但如果是大型App(自定義的動(dòng)態(tài)庫(kù)超過(guò)50個(gè)、或編譯結(jié)果二進(jìn)制文件超過(guò)30MB),這部分耗時(shí)將會(huì)變得突出。所幸,蘋果已經(jīng)在Xcode中加入這部分的支持。

蘋果提供的方法
  • 在Xcode的菜單中選擇Project→Scheme→Edit Scheme...,然后找到 Run → Environment Variables →+,添加name為DYLD_PRINT_STATISTICSvalue為1的環(huán)境變量。

  • 在Xcode運(yùn)行App時(shí),會(huì)在console中得到一個(gè)報(bào)告。例如,我在WiFi管家中加入以上設(shè)置之后,會(huì)得到這樣一個(gè)報(bào)告:

Total pre-main time: 94.33 milliseconds (100.0%)dylib loading time: 61.87 milliseconds (65.5%)rebase/binding time: 3.09 milliseconds (3.2%)ObjC setup time: 10.78 milliseconds (11.4%)initializer time: 18.50 milliseconds (19.6%)slowest intializers :libSystem.B.dylib : 3.59 milliseconds (3.8%)libBacktraceRecording.dylib : 3.65 milliseconds (3.8%)GTFreeWifi : 7.09 milliseconds (7.5%)
如何解讀
  • main()函數(shù)之前總共使用了94.33ms
  • 在94.33ms中,加載動(dòng)態(tài)庫(kù)用了61.87ms,指針重定位使用了3.09ms,ObjC類初始化使用了10.78ms,各種初始化使用了18.50ms。
  • 在初始化耗費(fèi)的18.50ms中,用時(shí)最多的三個(gè)初始化是libSystem.B.dylib、libBacktraceRecording.dylib以及GTFreeWifi。
  • main()函數(shù)之后

    從main()函數(shù)開始至applicationWillFinishLaunching結(jié)束,我們統(tǒng)一稱為main()函數(shù)之后的部分。

    3. 影響啟動(dòng)性能的因素

    App啟動(dòng)過(guò)程中每一個(gè)步驟都會(huì)影響啟動(dòng)性能,但是有些部分所消耗的時(shí)間少之又少,另外有些部分根本無(wú)法避免,考慮到投入產(chǎn)出比,我們只列出我們可以優(yōu)化的部分:

    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)越慢

    實(shí)驗(yàn)證明,在ObjC類的數(shù)目一樣多的情況下,需要加載的動(dòng)態(tài)庫(kù)越多,App啟動(dòng)就越慢。同樣的,在動(dòng)態(tài)庫(kù)一樣多的情況下,ObjC的類越多,App的啟動(dòng)也越慢。需要加載的動(dòng)態(tài)庫(kù)從1個(gè)上升到10個(gè)的時(shí)候,用戶幾乎感知不到任何分別,但從10個(gè)上升到100個(gè)的時(shí)候就會(huì)變得十分明顯。同理,100個(gè)類和1000個(gè)類,可能也很難查察覺(jué)得出,但1000個(gè)類和10000個(gè)類的分別就開始明顯起來(lái)。

    同樣的,盡量不要寫__attribute__((constructor))的C函數(shù),也盡量不要用到C++的靜態(tài)對(duì)象;至于ObjC的+load方法,似乎大家已經(jīng)習(xí)慣不用它了。任何情況下,能用dispatch_once()來(lái)完成的,就盡量不要用到以上的方法。

    main()函數(shù)之后耗時(shí)的影響因素
    • 執(zhí)行main()函數(shù)的耗時(shí)
    • 執(zhí)行applicationWillFinishLaunching的耗時(shí)
    • rootViewController及其childViewController的加載、view及其subviews的加載
    applicationWillFinishLaunching的耗時(shí)

    如果有這樣這樣的代碼:

    //AppDelegate.m @implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {self.rootViewController = [[[MQQTabBarController alloc] init] autorelease];self.window = [[[UIWindow alloc] init] autorelease];[self.window makeKeyAndVisible];self.window.rootViewController = self.rootViewController;UITabBarController *tabBarViewController = [[[UITabBarController alloc] init] autorelease];NSLog(@"%s", __PRETTY_FUNCTION__);return YES; }...//MQQTabBarController.m @implementation MQQTabBarController- (void)viewDidLoad {NSLog(@"%s", __PRETTY_FUNCTION__);[super viewDidLoad];// Do any additional setup after loading the view.UIViewController *tab1 = [[[MQQTab1ViewController alloc] init] autorelease];tab1.tabBarItem.title = @"red";[self addChildViewController:tab1];UIViewController *tab2 = [[[MQQTab2ViewController alloc] init] autorelease];tab2.tabBarItem.title = @"blue";[self addChildViewController:tab2];UIViewController *tab3 = [[[MQQTab3ViewController alloc] init] autorelease];tab3.tabBarItem.title = @"green";[self addChildViewController:tab3]; }... @end

    那么-[MQQTabBarController viewDidLoad]、 -[AppDelegate application:didFinishLaunchingWithOptions:]、 -[MQQTab1ViewController viewDidLoad]、 -[MQQTab2ViewController viewDidLoad]、 -[MQQTab2ViewController viewDidLoad] 完成的先后順序是怎樣的呢?

    答案是:

  • -[MQQTabBarController viewDidLoad]
  • -[MQQTab1ViewController viewDidLoad]
  • -[AppDelegate application:didFinishLaunchingWithOptions:]
  • -[MQQTab2ViewController viewDidLoad] (點(diǎn)擊了第二個(gè)tab之后加載)
  • -[MQQTab3ViewController viewDidLoad] (點(diǎn)擊了第三個(gè)tab之后加載)
  • 一般而言,大部分情況下我們都會(huì)把界面的初始化過(guò)程放在viewDidLoad,但是這個(gè)過(guò)程會(huì)影響消耗啟動(dòng)的時(shí)間。特別是在類似TabBarController這種會(huì)嵌套childViewController的ViewController的情況,它也會(huì)把部分children也初始化,因此各種viewDidLoad會(huì)遞歸的進(jìn)行。

    最簡(jiǎn)單的解決的方法,是把viewController延后加載,但實(shí)際上這屬于一種掩耳盜鈴,確實(shí),applicationWillFinishLaunching的耗時(shí)是降下來(lái)了,但用戶體驗(yàn)上并沒(méi)有感覺(jué)變快。

    更好一點(diǎn)的解決方法有點(diǎn)類似facebook,主視圖會(huì)第一時(shí)間加載,但里面的數(shù)據(jù)和界面都會(huì)延后加載,這樣用戶就會(huì)階段性的獲得視覺(jué)上的變化,從而在視覺(jué)體驗(yàn)上感覺(jué)App啟動(dòng)得很快。

    【第二部分】?jī)?yōu)化的目標(biāo)

    由于每個(gè)App的情況有所不同,需要加載的數(shù)據(jù)量也有所不同,事實(shí)上我們無(wú)法使用一種統(tǒng)一的標(biāo)準(zhǔn)來(lái)衡量不同的App。蘋果。

    • 應(yīng)該在400ms內(nèi)完成main()函數(shù)之前的加載
    • 整體過(guò)程耗時(shí)不能超過(guò)20秒,否則系統(tǒng)會(huì)kill掉進(jìn)程,App啟動(dòng)失敗

    400ms內(nèi)完成main()函數(shù)前的加載的建議值是怎樣定出來(lái)的呢?其實(shí)我也沒(méi)有太深究過(guò)這個(gè)問(wèn)題,但是,當(dāng)用戶點(diǎn)擊了一個(gè)App的圖標(biāo)時(shí),iOS做動(dòng)畫到閃屏圖出現(xiàn)的時(shí)長(zhǎng)正好是這個(gè)數(shù)字,我想也許跟這個(gè)有關(guān)。

    針對(duì)不同規(guī)模的App,我們的目標(biāo)應(yīng)該有所取舍。例如,對(duì)于像手機(jī)QQ這種集整個(gè)SNG的代碼大成擼出來(lái)的App,對(duì)動(dòng)態(tài)庫(kù)的使用在所難免,但對(duì)于WiFi管家,由于在用戶連接WiFi的時(shí)候需要非常快速的響應(yīng),所以快速啟動(dòng)就非常重要。

    那么,如何定制優(yōu)化的目標(biāo)呢?首先,要確定啟動(dòng)性能的界限,例如,在各種App性能的指標(biāo)中,哪一此屬于啟動(dòng)性能的范疇,哪一些則于App的流暢度性能?我認(rèn)為應(yīng)該首先把啟動(dòng)過(guò)程分為四個(gè)部分:

  • main()函數(shù)之前
  • main()函數(shù)之后至applicationWillFinishLaunching完成
  • App完成所有本地?cái)?shù)據(jù)的加載并將相應(yīng)的信息展示給用戶
  • App完成所有聯(lián)網(wǎng)數(shù)據(jù)的加載并將相應(yīng)的信息展示給用戶
  • 1+2一起決定了我們需要用戶等待多久才能出現(xiàn)一個(gè)主視圖,同時(shí)也是技術(shù)上可以精確測(cè)量的時(shí)長(zhǎng),1+2+3決定了用戶視覺(jué)上的等待出現(xiàn)有用信息所需要的時(shí)長(zhǎng),1+2+3+4決定了我們需要多少時(shí)間才能讓我們需要展示給用戶的所有信息全部出現(xiàn)。

    淘寶的iOS客戶端無(wú)疑是各部分都做得非常優(yōu)秀的典型。它所承載的業(yè)務(wù)完全不比微信和手機(jī)QQ少,但幾乎瞬間完成了啟動(dòng),并利用緩存機(jī)制使得用戶馬上看到“貌似完整”的界面,然后立即又刷新了剛剛聯(lián)網(wǎng)更新回來(lái)的信息。也就是說(shuō),無(wú)論是技術(shù)上還是視覺(jué)上,它都非常的“快”。

    【第三部分】WiFi管家啟動(dòng)優(yōu)化實(shí)踐

    先show一下成果:

    1. 移除不需要用到的動(dòng)態(tài)庫(kù)

    因?yàn)閃iFi管家是個(gè)小項(xiàng)目,用到的動(dòng)態(tài)庫(kù)不多,自動(dòng)化處理的優(yōu)勢(shì)不大,我這里也就簡(jiǎn)單的把依賴的動(dòng)態(tài)移除出項(xiàng)目,再根據(jù)編譯錯(cuò)誤一個(gè)一個(gè)加回來(lái)。如果有靠譜的方法,歡迎大家補(bǔ)充一下。

    2. 移除不需要用到的類

    項(xiàng)目做久了總有一些吊詭的類像幽靈一樣驅(qū)之不去,由于【不要相信產(chǎn)品經(jīng)理】的思想作怪,需求變更后,有些類可能用不上了,但卻因?yàn)閾?dān)心需求再變回來(lái)就沒(méi)有移除掉,后來(lái)就徹底忘記要移除了。

    為了解決這個(gè)歷史問(wèn)題,在這個(gè)過(guò)程中我試過(guò)多種方法來(lái)掃描沒(méi)有用到的類,其中有一種是編譯后對(duì)ObjC類的指針引用進(jìn)行反向掃描,可惜實(shí)際上收獲不是很明顯,而且還要寫很多例外代碼來(lái)處理一些特殊情況。后來(lái)發(fā)現(xiàn)一個(gè)叫做fui(Find Unused Imports)的開源項(xiàng)目能很好的分析出不再使用的類,準(zhǔn)確率非常高,唯一的問(wèn)題是它處理不了動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)里提供的類,也處理不了C++的類模板。

    使用方法是在Terminal中cd到項(xiàng)目所在的目錄,然后執(zhí)行fui find,然后等上那么幾分鐘(是的你沒(méi)有看錯(cuò),真的需要好幾分鐘甚至需要更長(zhǎng)的時(shí)間),就可以得到一個(gè)列表了。由于這個(gè)工具還不是100%靠譜,可根據(jù)這個(gè)列表,在Xcode中手動(dòng)檢查并刪除不再用到的類。

    實(shí)際上,日常對(duì)代碼工程的維護(hù)非常重要,如果制定好一套半廢棄代碼的維護(hù)方法,小問(wèn)題就不會(huì)積累成大問(wèn)題。有時(shí)候?qū)τ谝恍簳r(shí)不再使用的代碼,我也很糾結(jié)于要不要svn rm,因?yàn)閺拇a歷史中找刪除掉的文件還是不太方便。不知道大家有沒(méi)有相關(guān)的經(jīng)驗(yàn)可以分享,也請(qǐng)不吝賜教。

    3. 合并功能類似的類和擴(kuò)展(Category)

    由于Category的實(shí)現(xiàn)原理,和ObjC的動(dòng)態(tài)綁定有很強(qiáng)的關(guān)系,所以實(shí)際上類的擴(kuò)展是比較占用啟動(dòng)時(shí)間的。盡量合并一些擴(kuò)展,會(huì)對(duì)啟動(dòng)有一定的優(yōu)化作用。不過(guò)個(gè)人認(rèn)為也不能因?yàn)樗加脝?dòng)時(shí)間而去逃避使用擴(kuò)展,畢竟程序員的時(shí)間比CPU的時(shí)間值錢,這里只是強(qiáng)調(diào)要合并一些在工程、架構(gòu)上沒(méi)有太大意義的擴(kuò)展。

    4. 壓縮資源圖片

    壓縮圖片為什么能加快啟動(dòng)速度呢?因?yàn)閱?dòng)的時(shí)候大大小小的圖片加載個(gè)十來(lái)二十個(gè)是很正常的,圖片小了,IO操作量就小了,啟動(dòng)當(dāng)然就會(huì)快了。

    事實(shí)上,Xcode在編譯App的時(shí)候,已經(jīng)自動(dòng)把需要打包到App里的資源圖片壓縮過(guò)一遍了。然而Xcode的壓縮會(huì)相對(duì)比較保守。另一方面,我們正常的設(shè)計(jì)師由于需要符合其正常的審美需要生成的正常的PNG圖片,因此圖片大小是比較大的,然而如果以程序員的直男審美而采用過(guò)激的壓縮會(huì)直接激怒設(shè)計(jì)師。

    解決各種矛盾的方法就是要找出一種相當(dāng)靠譜的壓縮方法,而且最好是基本無(wú)損的,而且壓縮率還要特別高,至少要比Xcode自動(dòng)壓縮的效果要更好才有意義。經(jīng)過(guò)各種試驗(yàn),最后發(fā)現(xiàn)唯一可靠的壓縮算法是TinyPNG,其它各種方法,要么沒(méi)效果,要么產(chǎn)生色差或模糊。但是非常可惜的是TinyPNG并不是完全免費(fèi)的,而且需要通過(guò)網(wǎng)絡(luò)請(qǐng)求來(lái)壓縮圖片(應(yīng)該是為了保護(hù)其牛逼的壓縮算法)。

    為了解決這個(gè)問(wèn)題,我寫了一個(gè)類來(lái)執(zhí)行這個(gè)請(qǐng)求,請(qǐng)參見閱讀原文里的SSTinyPNGRequest和SSPNGCompressor。因?yàn)檫@個(gè)項(xiàng)目只有我一個(gè)人在用所以代碼寫得有點(diǎn)隨意,有問(wèn)題可以私聊也可以在評(píng)論里問(wèn),有改進(jìn)的方法也非常歡迎指正。另外說(shuō)明一下,使用這個(gè)類需要你自行到 這里 申請(qǐng)APIKey,每一個(gè)用戶每月有500張圖片壓縮是免費(fèi)的,而每個(gè)郵箱可以注冊(cè)一個(gè)用戶,你懂的。

    5. 優(yōu)化applicationWillFinishLaunching

    隨著項(xiàng)目做的時(shí)間長(zhǎng)了,applicationWillFinishLaunching里要處理的代碼會(huì)越積越多,WiFi管家的iOS版本有一段時(shí)間沒(méi)有控制好,里面的邏輯亂得有點(diǎn)丟人。因?yàn)榭赡苌婕暗揭恍╉?xiàng)目的安全性問(wèn)題,這里不能分享所有的優(yōu)化細(xì)節(jié)及發(fā)現(xiàn)的思路。僅列出在applicationWillFinishLaunching中主要需要處理的業(yè)務(wù)及相關(guān)問(wèn)題的改進(jìn)方案。

    這里大部分都是一些苦逼活,但有一點(diǎn)特別值得分享的是,有一些優(yōu)化,是無(wú)法在數(shù)據(jù)上體現(xiàn)的,但是視覺(jué)上卻能給用戶較大的提升。例如在【各種業(yè)務(wù)請(qǐng)求配置更新】的部分,經(jīng)過(guò)分析優(yōu)化后,啟動(dòng)過(guò)程并發(fā)的http請(qǐng)求數(shù)量從66條壓縮到了23條,如此一來(lái)為啟動(dòng)成功后新聞資訊及其圖片的加載留出了更多的帶寬,從而保證了在第一時(shí)間完成新聞資訊的加載。實(shí)際測(cè)試表明,光做KPI的事情是不夠的,人還是需要有點(diǎn)理想,經(jīng)過(guò)優(yōu)化,在視覺(jué)體驗(yàn)上進(jìn)步非常明顯。

    另外,過(guò)程中請(qǐng)教過(guò)SNG的大牛們,聽說(shuō)他們因?yàn)樾枰赼pplicationWillFinishLaunching里處理的業(yè)務(wù)更多,所以還做了管理器管理這些任務(wù),不過(guò)因?yàn)閃iFi管家是個(gè)小項(xiàng)目,有點(diǎn)殺雞用牛刀的感覺(jué),因此沒(méi)有深入研究。

    6. 優(yōu)化rootViewController加載

    考慮到我作為一只高級(jí)程序猴,工資很高,為了給公司節(jié)約成本,在優(yōu)化之前,當(dāng)然需要先測(cè)試一下哪些ViewController的加載耗時(shí)比較大,然后再深入到具體業(yè)務(wù)中看哪些部分存在較大的優(yōu)化空間。同時(shí),先做優(yōu)化效果明顯的部分也有利于增強(qiáng)自己的信心。

    在開始講述問(wèn)題之前,我們先來(lái)看一下WiFi管家的UI層次結(jié)構(gòu):

    一個(gè)看似簡(jiǎn)單的界面由于承載了很多業(yè)務(wù)需求,代碼量其實(shí)已經(jīng)非常驚人。這里我不具體講述這些驚人的業(yè)務(wù)量了,抽象而言可WiFi管家的UI架構(gòu)總體而言基于TabBarController的框架,三個(gè)tab分別是“連接”、“發(fā)現(xiàn)”及“我的”。App啟動(dòng)的時(shí)候,根據(jù)加載原理,會(huì)加載TabBarController、第一個(gè)Tab(“連接”)的ViewController及其所有childViewController。

    UI構(gòu)架請(qǐng)看如下示意圖,其中藍(lán)色的部分需要在App啟動(dòng)的時(shí)候立即加載:

    對(duì)所有啟動(dòng)相關(guān)的模塊打錨點(diǎn)計(jì)算耗時(shí)后,發(fā)現(xiàn)tabBarController和connectingViewController分別占用了applicationWillFinishLaunching耗時(shí)的31%和24%。加載耗費(fèi)了大量時(shí)間,這跟它所需要承載的邏輯任務(wù)似乎并不對(duì)稱。于是檢查相關(guān)代碼進(jìn)行深入分析,發(fā)現(xiàn)了幾個(gè)問(wèn)題比較嚴(yán)重:

  • 有些程序員可能架構(gòu)意識(shí)不是太強(qiáng),直接在tabBarController的啟動(dòng)過(guò)程中插入了各種奇怪的業(yè)務(wù),例如檢查WiFi連接狀態(tài)變化、配置拉取,而這些業(yè)務(wù)顯然應(yīng)該在另外的某些地方統(tǒng)一處理,而不應(yīng)該在一個(gè)ViewController上。

  • 由于一些歷史原因,連接頁(yè)的視圖控制器connectingViewController包含了三個(gè)childViewController:WiFiViewController、3GViewController、errorViewController,分別在WiFi狀態(tài)、3G狀態(tài)和出錯(cuò)狀態(tài)下展示界面(三選一,其中一個(gè)展示的時(shí)候其它兩個(gè)視圖會(huì)隱藏)。

  • 大部分view都是直接加載完的。有些界面的加載非常復(fù)雜,比如再進(jìn)入App時(shí)會(huì)展示一個(gè)檢查WiFi可用性和安全性的動(dòng)畫,由于需要疊加較多圖片,這部分視圖的加載耗時(shí)較多。

  • 由于隨著幾次改版之后,連接頁(yè)的UI架構(gòu)已經(jīng)變得很不合理,歷史包袱還是比較重的,而且耦合比較嚴(yán)重,幾乎無(wú)法改動(dòng),因此決定重構(gòu)。至于tabBarController,檢查代碼后決定簡(jiǎn)單的把不相關(guān)的業(yè)務(wù)做一些遷移,優(yōu)化childViewController的加載過(guò)程,不作重構(gòu)。

    改進(jìn)后的結(jié)構(gòu)大致如下圖,其中藍(lán)色部分需要在App啟動(dòng)的時(shí)候立即加載:

    由于本篇主要講啟動(dòng)性能優(yōu)化,重構(gòu)涉及的軟件工程和設(shè)計(jì)模式方面的東西就不詳細(xì)論述了,對(duì)啟動(dòng)優(yōu)化的過(guò)程,主要是使用了更合理的分層結(jié)構(gòu),使得啟動(dòng)得以在更短的時(shí)間內(nèi)完成。

    至此,WiFi管家的啟動(dòng)性能基本優(yōu)化完畢。

    7. 挖掘最后一點(diǎn)性能優(yōu)化

    由于WiFi管家是一個(gè)具有WiFi連接能力的App,因此有可能在后臺(tái)過(guò)程中完成冷啟動(dòng)過(guò)程(實(shí)際上是在用戶進(jìn)入系統(tǒng)的WiFi設(shè)置時(shí),iOS會(huì)啟動(dòng)WiFi管家,以便請(qǐng)求WiFi密碼)。在這種情況下,整個(gè)rootViewController都是不需要加載的。

    【第四部分】總結(jié)

    • 利用DYLD_PRINT_STATISTICS分析main()函數(shù)之前的耗時(shí)
    • 重新梳理架構(gòu),減少動(dòng)態(tài)庫(kù)、ObjC類的數(shù)目,減少Category的數(shù)目
    • 定期掃描不再使用的動(dòng)態(tài)庫(kù)、類、函數(shù),例如每?jī)蓚€(gè)迭代一次
    • 用dispatch_once()代替所有的 attribute((constructor)) 函數(shù)、C++靜態(tài)對(duì)象初始化、ObjC的+load
    • 在設(shè)計(jì)師可接受的范圍內(nèi)壓縮圖片的大小,會(huì)有意外收獲
    • 利用錨點(diǎn)分析applicationWillFinishLaunching的耗時(shí)
    • 將不需要馬上在applicationWillFinishLaunching執(zhí)行的代碼延后執(zhí)行
    • rootViewController的加載,適當(dāng)將某一級(jí)的childViewController或subviews延后加載
    • 如果你的App可能會(huì)被后臺(tái)拉起并冷啟動(dòng),可考慮不加載rootViewController
    • 不應(yīng)放過(guò)的一些小細(xì)節(jié)
    • 異步操作并不影響指標(biāo),但有可能影響交互體驗(yàn),例如大量網(wǎng)絡(luò)請(qǐng)求導(dǎo)致數(shù)據(jù)擁堵
    • 有時(shí)候一些交互上的優(yōu)化比技術(shù)手段效果更明顯,視覺(jué)上的快決不是冰冷的數(shù)據(jù)可以解釋的,好好和你們的設(shè)計(jì)師談?wù)剟?dòng)畫

    更多精彩內(nèi)容歡迎關(guān)注騰訊 Bugly的微信公眾賬號(hào):

    騰訊 Bugly是一款專為移動(dòng)開發(fā)者打造的質(zhì)量監(jiān)控工具,幫助開發(fā)者快速,便捷的定位線上應(yīng)用崩潰的情況以及解決方案。智能合并功能幫助開發(fā)同學(xué)把每天上報(bào)的數(shù)千條 Crash 根據(jù)根因合并分類,每日日?qǐng)?bào)會(huì)列出影響用戶數(shù)最多的崩潰,精準(zhǔn)定位功能幫助開發(fā)同學(xué)定位到出問(wèn)題的代碼行,實(shí)時(shí)上報(bào)可以在發(fā)布后快速的了解應(yīng)用的質(zhì)量情況,適配最新的 iOS, Android 官方操作系統(tǒng),鵝廠的工程師都在使用,快來(lái)加入我們吧!

    轉(zhuǎn)載于:https://my.oschina.net/bugly/blog/1512600

    總結(jié)

    以上是生活随笔為你收集整理的iOS App 启动性能优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    日韩欧美视频二区 | 欧美一区在线看 | 中文字幕久久精品一区 | 久久久久久久久久久久久9999 | 国产免费高清视频 | 中文字幕二区在线观看 | av成人免费在线看 | 国产在线观看高清视频 | 国产精品亚州 | 在线观看视频在线观看 | 久香蕉| 9999国产精品 | 日本bbbb摸bbbb | 青青网视频 | 丁香六月久久综合狠狠色 | 久久国产色 | 91精品国产亚洲 | 亚洲女人av | 91自拍视频在线观看 | 国产亚洲永久域名 | 国产黄色精品 | 国产黄免费 | 久久精品三 | 日韩 精品 一区 国产 麻豆 | 亚洲国产中文字幕在线视频综合 | 日韩精品久久中文字幕 | av解说在线观看 | 国产成人精品免费在线观看 | 国产精品久久久久久久妇 | 99riav1国产精品视频 | 狠狠操综合网 | 日本在线精品视频 | 久久久999精品视频 国产美女免费观看 | 91精品专区 | 91人人揉日日捏人人看 | 日韩伦理一区二区三区av在线 | 国产亚洲精品免费 | 久久一区二区三区国产精品 | 92中文资源在线 | 97精品国自产拍在线观看 | 99久久夜色精品国产亚洲96 | av高清免费 | 91精品国产综合久久福利 | 国产一区福利在线 | 婷婷丁香六月 | 色午夜影院 | 久久成人人人人精品欧 | 国产精品久久久久9999 | 精品成人免费 | 国产中文字幕在线观看 | 国产精品一区二区你懂的 | 欧美日韩中文国产一区发布 | 天天曰 | 亚洲精品乱码久久久久久9色 | 成人a级网站| 日韩电影中文字幕 | 亚洲精品久久视频 | 91爱爱网址| 毛片网免费 | 亚洲理论片 | 四虎在线观看精品视频 | 黄色av电影免费观看 | 91尤物国产尤物福利在线播放 | 玖玖精品在线 | 少妇高潮流白浆在线观看 | 国产xvideos免费视频播放 | 成人av资源在线 | 四虎免费在线观看 | 国产精品美女久久久免费 | 一区二区精 | 高清有码中文字幕 | www操操 | 日韩视频图片 | 欧美久久久影院 | 激情视频在线观看网址 | 久久国产精品一区二区 | 国产在线视频一区二区三区 | 激情网五月婷婷 | 91免费网址 | 国产黄色片免费观看 | 天天操天天插 | 久久免费公开视频 | 缴情综合网五月天 | 欧美人人爱 | 婷婷久草 | 99视频一区| 在线va视频 | 国产流白浆高潮在线观看 | 亚洲精品在线视频观看 | 黄色特一级片 | 四虎国产精品永久在线国在线 | 在线看国产 | 亚洲精品在线视频网站 | 久久精品中文 | 国产免费观看高清完整版 | 日日躁你夜夜躁你av蜜 | 一本一道久久a久久精品 | 视频直播国产精品 | 日韩a级免费视频 | 亚洲精品动漫成人3d无尽在线 | 日韩h在线观看 | 日韩电影在线观看一区二区三区 | 伊人狠狠操 | 成年人免费在线播放 | 亚洲 欧美 变态 国产 另类 | 天天久久夜夜 | 久久久蜜桃一区二区 | 免费日韩视 | 五月婷婷电影网 | 国产精品美女久久久久久免费 | 国产在线国产 | 激情偷乱人伦小说视频在线观看 | 久久久久久久久国产 | 超碰在线97国产 | 亚洲作爱视频 | 免费午夜在线视频 | 欧美综合在线视频 | 日日日日日 | 狠狠色丁香久久综合网 | 五月婷婷激情综合 | 国产手机在线精品 | 日韩欧美视频免费看 | av官网| 国产福利小视频在线 | 99国产精品免费网站 | 国产福利在线不卡 | 精品国产1区二区 | avwww在线| 超碰国产97 | 香蕉视频网站在线观看 | 国产成人久久精品77777综合 | 日韩在线视频一区二区三区 | 中文字幕在线播放日韩 | 国产蜜臀av | 午夜国产福利视频 | 国产精品成人国产乱一区 | 成片人卡1卡2卡3手机免费看 | 日韩大片在线免费观看 | 久久精品99精品国产香蕉 | 99精品免费在线观看 | 69视频永久免费观看 | 日韩精选在线观看 | 免费视频久久久久久久 | 激情动态| 久久久久久久久久伊人 | av免费在线观| 国产精品美女免费看 | 免费国产亚洲视频 | 欧美日韩另类在线 | 日本最新高清不卡中文字幕 | 国产一区二区网址 | 国产精品手机在线播放 | 亚洲免费视频观看 | 欧美爽爽爽| 精品无人国产偷自产在线 | a√资源在线 | 黄色亚洲在线 | 国产精品热视频 | 99久久精品免费看国产麻豆 | 久久草视频 | 在线观看免费中文字幕 | 人人澡人 | 一区二区观看 | 999成人 | 超碰在线人人97 | 婷婷色五 | 国产精品 日韩精品 | 99资源网| 欧美一级久久久 | 97精品超碰一区二区三区 | www.久热 | 81国产精品久久久久久久久久 | 中文字幕最新精品 | 九九久久电影 | 五月婷婷免费 | 成人午夜电影久久影院 | 手机看片久久 | 日韩黄色在线电影 | 国产做a爱一级久久 | 久久久在线免费观看 | 天干啦夜天干天干在线线 | 91成人精品一区在线播放 | 亚洲 中文 在线 精品 | 欧美日韩18 | 婷婷99| 黄色a视频免费 | 丁香婷婷综合五月 | www.com黄色 | 亚洲国产午夜 | 夜夜视频 | 91在线视频在线观看 | 色久综合 | 国产麻豆精品免费视频 | 在线性视频日韩欧美 | 国产成年免费视频 | 天天天干天天射天天天操 | 精品亚洲午夜久久久久91 | 欧美中文字幕第一页 | 国产精品大尺度 | 视频三区在线 | 久久99久久99精品免视看婷婷 | 久久久久综合视频 | 亚洲综合精品视频 | 色婷婷九月 | 韩国在线视频一区 | 97精品国自产拍在线观看 | 欧美日韩国产精品一区二区三区 | 免费日韩 精品中文字幕视频在线 | www黄色大片| 在线成人短视频 | 国产无吗一区二区三区在线欢 | 91精品国产高清 | 久久视频免费观看 | 成人久久 | 国产午夜精品一区二区三区在线观看 | 国际精品网 | 国产精品久久久久av免费 | 久久国产系列 | 国产永久免费高清在线观看视频 | 麻豆极品 | 日本爱爱免费视频 | 在线观看日韩一区 | 91精品免费在线观看 | 久久99影院| 日韩亚洲国产精品 | 五月婷在线视频 | 午夜av在线播放 | 欧美五月婷婷 | 国产在线综合视频 | 福利av在线| 免费网站观看www在线观看 | 在线观看视频色 | 日韩伦理片hd | 三级av片| 国产尤物在线观看 | 国产高清精 | 国产精品video爽爽爽爽 | 人人爱夜夜操 | 亚洲精品1区2区3区 超碰成人网 | 亚洲成人av片在线观看 | 日日摸日日爽 | av在线永久免费观看 | 在线观看av黄色 | 91精品人成在线观看 | 美女视频网 | 在线视频日韩 | 日韩影片在线观看 | 久久久精品免费看 | 免费在线观看av网站 | 久久综合九色综合欧美狠狠 | 美女视频免费一区二区 | 91麻豆国产福利在线观看 | 午夜婷婷在线播放 | 国产 一区二区三区 在线 | 日韩h在线观看 | 国产成人久久久77777 | 久久综合免费视频影院 | 成人在线视频论坛 | 免费黄色小网站 | 成人va在线观看 | 天天综合网久久 | 国产精品久久久久久久久久了 | 91香蕉视频好色先生 | 国产一区二区三精品久久久无广告 | 超碰九九 | 最新日韩视频 | 国产成人在线观看免费 | 欧美久久久 | 天天操比| 国产一区二区综合 | 国产h片在线观看 | 日韩av在线网站 | 成人久久18免费网站 | 国产永久免费高清在线观看视频 | 日韩在线电影观看 | 麻豆免费视频网站 | 热久久国产精品 | 欧美久久电影 | 婷婷在线免费视频 | 91精品国产三级a在线观看 | 91亚洲欧美| av电影一区 | 国内精品国产三级国产aⅴ久 | 国产不卡一区二区视频 | 亚洲高清不卡av | 国产一区二区日本 | 黄色大片中国 | av线上看| 午夜精品一区二区三区四区 | 激情视频在线高清看 | 久久久噜噜噜久久久 | 日本精品视频免费观看 | 午夜精品久久久 | 天堂网一区 | 久久国产美女 | 高清av免费一区中文字幕 | 一级片黄色片网站 | 婷婷六月网 | 激情偷乱人伦小说视频在线观看 | 中文字幕在线播放av | 久久久久精| 国产成视频在线观看 | 月丁香婷婷 | 日韩一区二区在线免费观看 | 人人看人人艹 | 久久新 | 99精品一区 | 欧美少妇影院 | 亚洲国产一区二区精品专区 | 久久免费视频网 | 激情电影影院 | 波多野结衣小视频 | 六月色丁香 | 肉色欧美久久久久久久免费看 | 91亚洲综合 | 国产一区二区在线观看免费 | 激情综合中文娱乐网 | 在线国产视频 | 欧美午夜视频在线 | 黄色成人在线网站 | 国产成人在线免费观看 | 午夜黄网| 亚洲九九爱 | 99热.com| 又黄又刺激视频 | 国产精品美乳一区二区免费 | 不卡av免费在线观看 | 国产精品一区二区美女视频免费看 | 99精品黄色片免费大全 | 92国产精品久久久久首页 | 国产尤物视频在线 | 成人一区二区在线观看 | 久久9视频 | 色婷丁香 | 国产人在线成免费视频 | 日韩欧美在线观看一区二区三区 | 六月激情丁香 | 人人揉人人揉人人揉人人揉97 | 欧美成人h版在线观看 | 国产99久久久精品 | 伊人va | av免费观看网站 | 日韩成人免费在线观看 | 91视频a | 日本黄色免费大片 | 黄污视频网站 | 亚洲精品资源在线 | 免费成人黄色 | 精品影院一区二区久久久 | 久久a v电影 | 韩国一区二区av | 亚洲午夜精品久久久 | 日韩精品在线视频免费观看 | 久99久久| 日本久久久久久久久久 | 亚洲免费av一区二区 | 精品久久久久久综合 | av在线中文 | h动漫中文字幕 | 97超碰精品 | 国产成a人亚洲精v品在线观看 | 国产成人精品久久亚洲高清不卡 | 一区二区精品在线 | 久草久草在线观看 | 天天色天天色天天色 | 综合色在线观看 | 不卡的av在线播放 | 极品国产91在线网站 | 麻豆91精品91久久久 | 国产成人精品一区二 | 黄色三级网站 | 精品国产自在精品国产精野外直播 | 曰本三级在线 | 91麻豆国产福利在线观看 | 亚洲女人av | 久久久久久久久艹 | 国产区在线看 | 免费观看福利视频 | 99精品视频免费观看视频 | 欧美精品首页 | 免费黄色激情视频 | 亚洲国产日韩在线 | 亚洲午夜精品久久久久久久久 | 精品国产精品久久一区免费式 | 午夜久久福利影院 | 午夜手机电影 | 天天爽天天做 | 91精品网站 | 97国产精品免费 | 91亚洲狠狠婷婷综合久久久 | 亚洲va欧美va国产va黑人 | 天天爽天天爽 | www.天天色.com | www亚洲视频 | 精品国产aⅴ一区二区三区 在线直播av | 97免费在线观看视频 | 99r在线观看 | av中文字幕不卡 | 日本黄色免费看 | 久草在线视频网站 | 成人免费视频在线观看 | 天天干天天草 | 成人sm另类专区 | zzijzzij亚洲成熟少妇 | 久久久亚洲精品 | 韩国精品在线 | 在线观看视频福利 | 亚洲精品www久久久 www国产精品com | 久久专区| 99久久夜色精品国产亚洲 | 99视频在线播放 | 欧美精品你懂的 | 欧美乱大交 | 精品久久久久久一区二区里番 | 在线电影91 | 国产精品日韩 | 成人小视频在线免费观看 | 97激情影院 | 国产精品综合av一区二区国产馆 | 久国产在线播放 | av中文字幕在线免费观看 | 亚洲高清在线视频 | 亚洲精品成人av在线 | 欧美专区亚洲专区 | 国产日韩在线播放 | 91免费观看国产 | 欧美乱大交 | 久久丁香网 | 久久久久国产成人免费精品免费 | 97av超碰 | 亚洲黄a| 日韩美在线观看 | 四虎永久精品在线 | 在线国产日本 | 国产黄色片在线 | 伊人亚洲精品 | 日日干天天 | 久久久久久高潮国产精品视 | 日韩在线观看精品 | 久久久久女人精品毛片 | 精品国产人成亚洲区 | 色综合久久五月天 | 亚洲欧美综合精品久久成人 | 婷婷成人在线 | 香蕉视频久久久 | 色多多视频在线观看 | 在线播放精品一区二区三区 | 久久久不卡影院 | 国产999精品久久久影片官网 | www久久国产 | 国产一区二区三区高清播放 | 久草国产在线观看 | 又黄又刺激的视频 | 久草在线视频首页 | 天天躁日日躁狠狠躁av麻豆 | 国产精品99久久99久久久二8 | 欧美日韩久久一区 | 中文字幕成人av | 国产 日韩 欧美 自拍 | 色七七亚洲影院 | 亚洲精品一区二区网址 | 色香蕉视频| 97国产电影 | 精品视频免费观看 | 久久草网| 在线 视频 一区二区 | 天堂素人在线 | 成人午夜电影网站 | 四虎影视av | 五月婷婷在线综合 | 高清免费在线视频 | 久久久一本精品99久久精品66 | 免费成人看片 | 国产精品久久久久久久久久新婚 | 综合色播| 97精品超碰一区二区三区 | 日韩在线观看网站 | 国产精品色婷婷视频 | 免费av网站观看 | 国产在线观看不卡 | 狠狠色丁香婷婷综合 | 日本精品久久久久久 | 免费三级av | 亚洲精品国产精品乱码不99热 | 精品国产免费看 | 91av中文字幕 | 在线有码中文字幕 | 国产成在线观看免费视频 | 国产99久久久精品 | 麻豆传媒精品 | 欧美日本一区 | 91九色蝌蚪国产 | a色视频| 国产一区精品在线 | 不卡视频在线看 | 久久 一区 | 91在线你懂的 | a爱爱视频 | 97品白浆高清久久久久久 | 香蕉视频最新网址 | 狠狠色噜噜狠狠狠狠 | 国产一区二区精品91 | 欧美久久久久久久久久久久久 | 日本一区二区三区免费观看 | 精品在线播放 | 久久久久久久久免费 | 成人免费影院 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 久久久九色精品国产一区二区三区 | 99中文字幕视频 | 制服丝袜一区二区 | 国产视频在线观看一区 | 精品在线小视频 | 亚洲aaa毛片 | 欧美色图一区 | 欧美日韩大片在线观看 | 精品亚洲一区二区 | 欧洲在线免费视频 | 国产99久久久精品 | 久久一区国产 | 欧美日韩国产成人 | 成人在线一区二区三区 | 天天干天天操天天 | 欧美日韩国产亚洲乱码字幕 | 久久综合婷婷国产二区高清 | www.av免费观看 | 一区二区精品在线 | 免费日韩在线 | 99这里都是精品 | 婷婷国产精品 | 韩日色视频 | 999成人| 欧美激情综合五月色丁香 | 久久国产精品一区二区 | 中文字幕在线播放日韩 | 激情综合色综合久久 | 探花视频在线观看免费版 | 国产又粗又猛又爽又黄的视频免费 | 九九九电影免费看 | 又黄又爽又色无遮挡免费 | 97香蕉超级碰碰久久免费软件 | 蜜桃视频日韩 | 在线欧美小视频 | 九九三级毛片 | 日日干干 | 2021国产精品 | 77国产精品 | 久久久久久久免费观看 | av在线小说 | 久久99久国产精品黄毛片入口 | 久久久精品网站 | 免费精品人在线二线三线 | 亚洲精品资源 | 日韩v欧美v日本v亚洲v国产v | 久久久久久久久久久久久9999 | 91精品视频一区二区三区 | 99久久99热这里只有精品 | 国产真实精品久久二三区 | 久草久视频 | 天天色天天搞 | 日韩在线观看一区 | 97视频久久久 | 在线免费观看视频一区二区三区 | 91精品蜜桃 | 久久久久国产精品视频 | 精品一区二区在线免费观看 | 精品国产成人在线 | 综合婷婷丁香 | 91九色成人 | 亚洲自拍自偷 | 亚洲少妇激情 | 亚州国产精品视频 | 黄网站污 | 国产一区免费在线观看 | 欧美视频99| 亚洲国产精品视频在线观看 | 日韩av偷拍 | 欧美日韩中文另类 | 日本精品视频一区 | 九九亚洲精品 | 热久久99这里有精品 | 国产一区观看 | 美女网站在线观看 | 亚洲成a人片综合在线 | 日韩精品久久久 | 亚洲人人av | 亚洲精品中文在线 | 国产69久久 | 国产一区播放 | 五月天狠狠操 | 国产在线国偷精品产拍免费yy | 日日夜夜91 | 精品视频 | 在线看不卡av | 91免费观看国产 | 夜色资源网| 超碰夜夜| 亚洲午夜精品在线观看 | 精品国产免费看 | 国产精品不卡 | 天天爱天天操天天爽 | av在线免费观看不卡 | 精品国偷自产在线 | 久久网站最新地址 | 国模吧一区| 午夜骚影 | 免费视频三区 | 久久免费精品一区二区三区 | 久久久久久久综合色一本 | 日本激情视频中文字幕 | 欧美激情视频在线免费观看 | 精品国产欧美一区二区三区不卡 | 国产视频一级 | 91丨九色丨蝌蚪丰满 | 国产一级在线看 | 免费在线| av在线电影网站 | 久久国产精品久久w女人spa | 亚洲激情婷婷 | 91精品国产麻豆国产自产影视 | 国产精品中文字幕在线观看 | 91精品视频免费看 | 在线免费黄色片 | 丁香五月亚洲综合在线 | 又大又硬又黄又爽视频在线观看 | 亚洲国产日韩一区 | 91视频成人免费 | 狠狠狠色丁香综合久久天下网 | 色偷偷网站视频 | 国产成人免费 | 日韩在线视频在线观看 | av综合av | 日韩中文字幕国产 | 亚洲毛片一区二区三区 | 91麻豆精品国产91久久久久久 | 中文字幕一区二区三区在线播放 | 亚洲一级片在线看 | 狠狠干狠狠艹 | 成人免费在线观看入口 | 99热最新精品 | 日韩视频免费观看高清完整版在线 | www国产一区| 国产精品福利av | 黄色av免费看 | 亚洲美女视频网 | www178ccom视频在线 | www五月天| 99久久超碰中文字幕伊人 | 操操日日| 欧美a级在线免费观看 | 国产综合在线观看视频 | av免费片| 国产精品久久婷婷六月丁香 | 久久久鲁| 91资源在线免费观看 | 欧美日韩免费在线观看视频 | 人人爱人人做人人爽 | 久久久久久久久久久免费av | 免费av网站在线看 | 天天操夜夜操国产精品 | 色先锋av资源中文字幕 | 亚洲人成免费 | 丝袜av网站 | 黄色字幕网 | 国产伦理久久精品久久久久_ | 欧美日韩国产高清视频 | 精品国产免费观看 | 狠狠干成人 | 久草在线中文视频 | 91精品久久香蕉国产线看观看 | 九热精品| av大全免费在线观看 | 青青网视频 | 一区二区免费不卡在线 | 精品人人人 | 91免费在线播放 | 五月天久久综合网 | 欧洲在线免费视频 | 国产一区麻豆 | 国产精品麻豆99久久久久久 | 国产精品黄色av | 国产精品系列在线播放 | 91久久精品一区二区三区 | 胖bbbb搡bbbb擦bbbb | 久久精品久久精品 | 亚洲精品小区久久久久久 | 国产精品入口麻豆www | 色综合色综合久久综合频道88 | 国产精品不卡在线播放 | 成人免费视频a | 亚洲黄在线观看 | 视频 国产区 | 国产99一区视频免费 | 久久成人国产精品免费软件 | 一级免费av | 欧美 激情 国产 91 在线 | 福利视频网站 | 亚洲精品久久久蜜臀下载官网 | 久久99国产精品自在自在app | 日韩av女优视频 | 999视频网 | 久久久久久美女 | 五月婷婷在线视频观看 | 久久人人爽人人 | 国色天香在线观看 | 国产99在线 | 国产精品午夜久久 | 国产免费又爽又刺激在线观看 | 激情欧美丁香 | 国产精品婷婷午夜在线观看 | 婷婷久久网 | 99热精品在线观看 | 亚洲美女视频在线观看 | 欧美性色综合网 | 久久久久久久久久久久久久电影 | 欧美 亚洲 另类 激情 另类 | 精品视频久久久 | 激情综合色综合久久综合 | 国产成人久久精品一区二区三区 | 日韩专区一区二区 | 天天翘av | 日av免费 | 久久久久国产精品午夜一区 | 久久国产综合视频 | 在线观看免费视频 | 久久久国产一区二区三区四区小说 | 成人黄色一级视频 | 欧美天天干 | 久久午夜羞羞影院 | 99精品国产福利在线观看免费 | 99视频在线免费观看 | 国产免费又爽又刺激在线观看 | 亚洲精品自拍 | 日韩精品在线视频 | 国产婷婷精品 | 久久中文字幕导航 | 精品女同一区二区三区在线观看 | 999久久| 一级一级一片免费 | 欧美一区免费在线观看 | 欧美色黄 | 麻豆va一区二区三区久久浪 | 91精品在线看 | 国产精品视频app | 国产精品96久久久久久吹潮 | 波多野结衣在线观看一区二区三区 | 欧美一二区在线 | 免费一级片在线观看 | 日韩毛片一区 | 日本久久91 | 99r在线视频 | 一区二区三区在线观看免费 | 亚洲欧美经典 | 中文字幕 成人 | 青青射 | 欧美日韩1区 | 久久国产午夜精品理论片最新版本 | 久久久久久综合网天天 | 国产精品 日韩精品 | 欧美日韩一区二区在线观看 | 亚州精品在线视频 | 97精产国品一二三产区在线 | 成年人在线观看视频免费 | 国产.精品.日韩.另类.中文.在线.播放 | 麻豆视频在线免费观看 | 国产美女搞久久 | 亚洲在线高清 | 99久热在线精品视频观看 | 久久成人免费视频 | 久久免费观看少妇a级毛片 久久久久成人免费 | 免费av 在线| 日韩在线观看a | 91精品国产一区二区在线观看 | 91精品欧美一区二区三区 | 色噜噜在线观看视频 | 99久久婷婷国产 | 久久69精品 | 国产精品亚洲人在线观看 | 2000xxx影视| 丁香九月婷婷综合 | 欧美精品久久久久久久亚洲调教 | 亚洲国产精品va在线 | 欧美日韩国产一区二区三区 | 美女视频黄频大全免费 | 天天爱天天 | 亚洲一区二区高潮无套美女 | 处女av在线| 日韩欧美精品在线 | 亚洲精品视频在线免费播放 | 色操插| 一区二区三区中文字幕在线 | www.干| 国产在线精品观看 | 国产精品一区免费看8c0m | 免费观看v片在线观看 | 91经典在线 | 午夜精品视频免费在线观看 | av超碰在线观看 | 成人av在线观 | 99热这里只有精品在线观看 | 伊人日日干| 人人狠狠综合久久亚洲 | 91九色视频导航 | 日韩在线观看电影 | 久久久久电影 | 亚洲永久国产精品 | 国产精品嫩草影院99网站 | 免费看一级 | 91精品国产欧美一区二区成人 | 国产黄免费 | 国产麻豆视频在线观看 | 日韩av一区二区三区在线观看 | 日韩亚洲精品电影 | 国产老妇av | 亚洲激情电影在线 | 日韩视频免费看 | 精品福利在线 | 日韩高清一二区 | 色婷av| 国产高清视频色在线www | 久久免费成人网 | av成人资源 | 天天天干夜夜夜操 | 国产一区精品在线观看 | 成人av一区二区三区 | 午夜色性片 | 天堂入口网站 | 成人午夜精品久久久久久久3d | 99久在线精品99re8热视频 | 久久久国产精品视频 | 久久国产精品免费一区 | 九九免费在线观看 | 日日爽| 亚洲国产精品电影在线观看 | 91在线免费公开视频 | 亚洲精品小区久久久久久 | 天天草天天 | 亚洲国产无 | 国产原创av片 | 最近高清中文在线字幕在线观看 | 一区二区三区免费看 | av中文字幕不卡 | 91九色精品国产 | 日韩在线视频播放 | 国产成人精品国内自产拍免费看 | 色丁香久久 | 亚洲视频1 | 午夜aaaa| 在线国产一区 | 五月天久久综合网 | 国内精品视频一区二区三区八戒 | 一区二区三区四区五区在线 | 久久国色夜色精品国产 | 国产福利一区二区三区在线观看 | 狠狠色丁香婷综合久久 | 亚洲国产一二三 | 性色在线视频 | 午夜久久久精品 | 欧美一级片在线免费观看 | 欧美激情视频一二三区 | 色姑娘综合天天 | 精品一区二区影视 | 日韩在线看片 | 国产精品久久久久久久久久久免费看 | 国产在线观看地址 | av高清一区 | 激情久久久久 | 免费在线国产 | 欧美性色xo影院 | 99久久精品免费 | 欧美一区日韩一区 | 黄色亚洲大片免费在线观看 | 国产九九九视频 | 国产又粗又猛又黄又爽的视频 | 亚洲欧洲国产精品 | 国产91全国探花系列在线播放 | 精品国产亚洲一区二区麻豆 | 91在线视频免费 | av高清在线 | 日韩精品一区二区三区在线播放 | 亚洲国产视频a | 国产剧情一区二区在线观看 | 欧美另类69 | 久久精品免费 | 在线视频91| 视频在线在亚洲 | 狠狠的操狠狠的干 | 蜜臀久久99精品久久久无需会员 | 最新久久免费视频 | 日本韩国在线不卡 | 美女视频a美女大全免费下载蜜臀 | 国产99精品| 中文字幕在线播放一区二区 | 91视频免费| 欧美大码xxxx | 久久99热精品这里久久精品 | 黄色免费观看视频 | 久久黄色片子 | 日韩v欧美v日本v亚洲v国产v | 欧美少妇影院 | 精品国产久 | 天天操天天干天天 | 亚洲资源在线 | 欧美精品xxx | 在线免费观看视频你懂的 | 一本一本久久aa综合精品 | 日韩综合视频在线观看 | 精品视频在线观看 | 成人黄在线 | 亚洲久草视频 | 日韩精品中文字幕在线不卡尤物 | 亚洲国产理论片 | 国产精品亚 | 在线午夜 | 国产精品a久久 | 亚洲国产成人在线观看 | 国产福利av | 91视频麻豆| 国产黄色av网站 | 精品国产乱码一区二区三区在线 | 亚洲精品一区二区18漫画 | 中文字幕日韩av | 在线亚洲欧美视频 | 欧美日韩二区三区 | 国产手机在线 | av超碰免费在线 | av天天在线观看 | 日韩欧美视频免费观看 | 精品久久久久久亚洲综合网 | 久久久久久久久精 | 欧美另类高潮 | 久久夜色精品国产欧美一区麻豆 | 丁香婷婷激情网 | 丁香综合五月 | 国产精品成人自产拍在线观看 | 国产亚洲欧洲 | 国产亚洲精品久久久久久移动网络 | 成人羞羞视频在线观看免费 | 美女黄网久久 | 激情五月综合网 | 欧美一区二区三区激情视频 | 欧洲视频一区 | 黄色大片中国 | 日韩mv欧美mv国产精品 | 亚洲人成免费网站 | 午夜国产一区 | 久久久久免费精品视频 | 国产黄色精品在线 | 免费a级毛片在线看 | 久久99亚洲网美利坚合众国 | 国产探花视频在线播放 | 99国产在线观看 | 亚洲国产中文在线观看 | 91视频三区 | 国产一区在线观看视频 | 欧美日韩一区二区三区在线免费观看 | 五月婷婷中文网 | 久热这里有精品 | 欧美日韩免费网站 | 99精品国产一区二区三区麻豆 | 免费午夜av | 欧美日韩免费一区二区 | 特级毛片爽www免费版 | 国产综合视频在线观看 | 日本爱爱免费 | 又黄又爽又色无遮挡免费 | 五月激情久久 | 亚洲精品资源在线 | 久久精品久久99精品久久 | 免费黄色网址大全 | 国产精品久久久久久久久久尿 | 久久久久久久久福利 | 色婷av| 国产老太婆免费交性大片 | 色视频在线观看免费 | 欧美国产高清 | 国产视频2区 | 成人在线视| 蜜臀久久99精品久久久久久网站 | 色偷偷88888欧美精品久久 | 手机在线黄色网址 | 中文字幕av最新更新 | 天天爽天天爽夜夜爽 | 视频福利在线 | 在线观看久久久久久 | 在线亚洲人成电影网站色www | 伊人影院99 | 99久久婷婷国产一区二区三区 | 99欧美| 精品久久久久久久久久久久久 | 日本精品视频在线观看 | 国产午夜剧场 | 欧美综合久久 | 视频二区在线 | 国产精品免费在线视频 | se视频网址 | 97人人添人澡人人爽超碰动图 | 欧美视屏一区二区 |