2017-03-06 87 views
1

我在後臺線程下載圖像,並在主線程上將此圖像設置爲UIImageView。但它給我一些警告象背景線程上的IOS警告

Using low GPU priority for background rendering 

同時請參閱下面的代碼以供參考

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^(void) { 
    int randomImgNum = [[contentDict valueForKey:@"imageIndex"]intValue]; 
    UIImage *image = [UIImage imageNamed:[Utils getImageFromIndex:randomImgNum]]; 
    UIImage *newBlurredImage = [image blurredImageWithRadius:5.0]; 
    dispatch_sync(dispatch_get_main_queue(), ^(void) { 
     customVieww.imgCardView.image = image; 
     [self setBlurrImage:newBlurredImage]; 
    }); 
}); 

請讓我知道可能是什麼問題,我們怎樣才能解決這個問題。

如果我錯過了任何事,請讓我知道任何解釋。

預先感謝您。

+0

爲什麼DISPATCH_QUEUE_PRIORITY_BACKGROUND不DISPATCH_QUEUE_PRIORITY_DEFAULT –

+0

謝謝麥克我已經嘗試了這個解決方案很好,但仍然得到同樣的警告 –

+1

我假設問題是由'blurredImageWithRadius'引起的。你可以發佈特定方法的代碼嗎? –

回答

0

,如果你想你必須使用主隊列 主視圖中工作,因爲如果你使用一個後臺隊列改變的UIView

更新代碼,它可能會導致一個問題:

dispatch_async(dispatch_get_main_queue(), ^{ 
    int randomImgNum = [[contentDict valueForKey:@"imageIndex"]intValue]; 
    UIImage *image = [UIImage imageNamed:[Utils getImageFromIndex:randomImgNum]]; 
    UIImage *newBlurredImage = [image blurredImageWithRadius:5.0]; 
    dispatch_sync(dispatch_get_main_queue(), ^(void) { 
     customVieww.imgCardView.image = image; 
     [self setBlurrImage:newBlurredImage]; 
    }); 
}); 
+0

您能解釋一下在給定問題中影響UI的背景隊列中運行的進程是什麼? –

+0

謝謝兄弟,但我們沒有更新後臺線程上的任何UI如果我們沒有使用任何後臺線程,將使用main_queue –

0
+0

謝謝@KKRocks但是我會在哪裏解決問題。 –

+0

爲每個矩形創建一個CALayer並將它們添加爲UIImage的子圖層。 CALayer層次結構由GPU渲染。 – KKRocks