我正在使用UINavigationController開發iOS應用程序。我遇到性能問題,每次加載視圖時,加載新視圖所需的時間增加約0.1秒。我希望有人能就如何解決這個問題提供一般性建議。性能問題:隨時間推移增加查看時間
我在下面列出了性能分析數據。似乎沒有任何無限的增長或內存泄漏。
關於應用程序的更多信息:它具有相當數量的視圖(高於20),並且具有相當複雜的許多不同的自定義單元格的表格視圖。我使用了一個基本的viewcontroller,它包含了我爲每個視圖控制器分類的所有tableview和導航代碼。
這裏是一個加載出現此性能問題上的視圖的示例代碼:
-(IBAction)evaluateTapped:(id)sender
{
NSArray *arrayOfPropertiesToLoad = [self.sharedStore requestAnArrayOfObjectsWithEntityDescription:@"Property" forWhichAttribute:@"isEvaluated" isEqualTo:[NSNumber numberWithBool:YES]];
NSArray *sortedArray = [[OzStore sharedStore] sortArray:arrayOfPropertiesToLoad withKey:@"id" ascending:NO];
NSMutableArray *mutSortedArray = [NSMutableArray arrayWithArray:sortedArray];
OzEvaluatePropertyListViewController *propertyList = [[OzEvaluatePropertyListViewController alloc] initWithNibName:nil bundle:nil withSortedDataArray:mutSortedArray useCellClass:@"OzPropertyCell" withUnit:nil];
[self.navigationController pushViewController:propertyList animated:YES];
}
您是否嘗試過時間分析以查看額外時間內發生了什麼?另外,在視圖創建周圍顯示一些代碼 - 那裏有任何循環嗎? – Wain
除了Time Profiler工具,您還可以在代碼中的各個點處放置CFAbsoluteTimeGetCurrent()調用,並查看大部分時間花費的位置。 – yurish
我使用時間分析,並且似乎所有耗時的最耗時的方法都隨時間增加。最上面的方法是cellForRowAtIndexPath。我有很多子視圖的自定義UITableViewCells,我認爲這會傷害我的表現。然而,這並不能解釋爲什麼我的表現會隨着時間的推移而惡化。 – ChemDev