0

我在尋找一些建議,可能會導致我的IOS應用程序中的CPU出現問題。CPU運行在100%以上

該應用程序運行良好,過了一段時間後,CPU將保持高速運行。我使用UICollectionView來顯示使用線程生成和編輯的水平縮略圖。當我使用UICollectionView並滾動圖像時,尖峯似乎發生。

我發佈了一個問題的屏幕截圖,下面的代碼是我用來編輯圖像的。

enter image description here

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

       UIImage *imageWithEffect = [self editImage:[[self.activeEffectsArray objectAtIndex:index] objectAtIndex:0] ImageToEdit:self.thumbnailImage]; 

       dispatch_async(dispatch_get_main_queue(), ^{ 

        [imageViewWithEffect setImage:imageWithEffect]; 
        [activityIndicator removeFromSuperview]; 

        [[self.activeEffectsArray objectAtIndex:index] insertObject:imageWithEffect atIndex:2]; 

       }); 

      }); 



- (UIImage *)editImage:(NSString *)effectName ImageToEdit:(UIImage *)tmpImage { 

EffectBigApple *effectBigApple = [[EffectBigApple alloc] init]; 


if([effectName isEqualToString:@"BigApple 1"]){ 

    return [effectBigApple processImage:tmpImage filterType:@"BigApple 1" sliderValue:1 type:nil]; 

} 
if([effectName isEqualToString:@"BigApple 2"]){ 

    return [effectBigApple processImage:tmpImage filterType:@"BigApple 2" sliderValue:1 type:nil]; 

} 
if([effectName isEqualToString:@"BigApple 3"]){ 

    return [effectBigApple processImage:tmpImage filterType:@"BigApple 3" sliderValue:1 type:nil]; 

} 
if([effectName isEqualToString:@"BigApple 4"]){ 

    return [effectBigApple processImage:tmpImage filterType:@"BigApple 4" sliderValue:1 type:nil]; 

} 

return nil; 
} 

這可能是另一段代碼,是造成它,但我不知道?

+0

我已在editImage中添加。謝謝 – ORStudios

+0

請記住,我們正在尋找密集的部分,這不是它。深入一層,請顯示'processImage:' –

回答

3

您沒有提供足夠的信息來幫助我們。

一般而言,當您將新的表格視圖/集合視圖單元格滾動到視圖中時,您希望避免任何「繁重工作」。您需要一個方案,您可以在其中顯示佔位符圖像,將處理排隊到後臺隊列,並在完成後更新結果。

同樣重要的是,您希望緩存結果,因此您只能處理每個圖像一次。如果用戶向下滾動,然後滾動回來,則應該在圖像緩存中找到已處理的圖像並使用這些圖像。內存中緩存速度最快,但即使將處理後的圖像緩存到磁盤,也可能會顯着提高速度。

當你開始一堆後臺處理時,你的CPU使用率變得非常高,這是非常正常的,並不一定是問題。您只需確保後臺處理不會導致用戶界面不穩定。假設您有一個很好的系統將圖像處理排隊到後臺隊列,並在準備就緒後緩存顯示處理後的圖像,則可能需要將處理隊列中的優先級恢復到下一個較低優先級DISPATCH_QUEUE_PRIORITY_LOW。這會給用戶交互帶來更高的優先級,並減慢圖像處理速度。

如果我沒有記錯的話,CPU使用最大值爲100 x設備上的核心數。因此,如果您使用的是2核iPhone 4s,則最大CPU爲200.