iOS效能最佳化技巧

來源:互聯網
上載者:User

iOS效能最佳化技巧
通過靜態 Analyze 工具,以及運行時 Profile 工具分析效能瓶頸,並進行效能最佳化。結合本人在開發中遇到的問題,可以從以下幾個方面進行效能最佳化。 一、view最佳化1、不透明的View 設定為opaque。 2、根據實際情況重用、消極式載入或預先載入View。 3、減少subviews數量,定製複雜cell使用drawRect。盡量使用drawRect而不是layoutSubView。 4、不直接調用drawRect、 layoutSubviews方法。萬不得已時可以用替代方法: setNeedsDisplayInRect,layoutIfNeeded,替代方法也盡量不要調用,通過合理的代碼結構解決重布局問題,盡量一次完成布局。 二、UITableView最佳化1、正確使用‘reuseIdentifier’重用cell。 2、盡量使所有的view opaque。 3、減少subviews數量,定製複雜cell使用drawRect。 4、盡量不使用‘cellForRowAtIndexPath’。 5、cache儘可能多的東西,包括行高。 三、緩衝最佳化1、緩衝不大可能改變但是需要經常讀取的東西。遠端伺服器的響應、圖片、計算結果。 2、重用大開銷對象。對於初始化很慢的對象通過添加屬性的方式保持該對象,保證只被初始化一次,多次複用。如NSDataFormatter。 3、方法指標緩衝。如果一個方法在一個迴圈次數非常多的迴圈中使用,在進入迴圈前使用methodForSelector擷取該方法的IMP,在迴圈體中直接調用該IMP。 四、線程最佳化1、 耗時操作使用子線程進行,或者放入任務隊列中。 2、同步使用串列隊列代替同步鎖。 3、不重要的任務放在idle中運行 - (void)idleNotificationMethod {    // do something here} - (void)registerForIdleNotification {    [[NSNotificationCenter defaultCenter] addObserver:self        selector:@selector(idleNotificationMethod)        name:@"IdleNotification"        object:nil];            NSNotification *notification = [NSNotification        notificationWithName:@"IdleNotification" object:nil];            [[NSNotificationQueue defaultQueue] enqueueNotification:notification      postingStyle:NSPostWhenIdle];} 五、記憶體最佳化使用autorelease pool 降低記憶體峰值 六、代碼細節最佳化1、不在viewWillApear中進行費時操作 2、如果關鍵代碼用C/C++效率更高就使用C/C++ 七、圖片最佳化對圖片資料進行decode。在子線程中設定image的大小後,在imageview中使用縮放後的image。原因:由於UIImage的imageWithData函數是每次畫圖的時候才將Data解壓成ARGB的映像,所以在每次畫圖的時候,會有一個解壓操作,UIImage初始化後僅僅是把圖片載入到記憶體中,而實際的解碼和重採樣是在圖片需要顯示時才進行。 //圖片重採樣,在子線程中進行CGSize itemSize = CGSizeMake(width, height);//實際要縮放的大小UIGraphicsBeginImageContext(itemSize);CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);[image drawInRect:imageRect];UIImage newImage = UIGraphicsGetImageFromCurrentImageContext(); //重採樣後的圖片UIGraphicsEndImageContext(); 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.