你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS性能優化技巧

iOS性能優化技巧

編輯: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(); 
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved