From 144327ae9934f12aeb7145c24fbca705e533ef76 Mon Sep 17 00:00:00 2001 From: Garrett Moon Date: Sat, 1 Aug 2015 09:24:47 -0700 Subject: [PATCH 1/2] Set QOS / Thread priority Surprisingly, it seems that leaving the qos priority to default does not actually lead to a qos of background like the documentation states. I've found that the QOS gets upgraded to user interactive in some cases. This explicitly sets the QOS on all operations to background so we don't affect scroll performance. --- Pod/Classes/PINRemoteImageManager.m | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Pod/Classes/PINRemoteImageManager.m b/Pod/Classes/PINRemoteImageManager.m index 25fcb6af..312be40e 100644 --- a/Pod/Classes/PINRemoteImageManager.m +++ b/Pod/Classes/PINRemoteImageManager.m @@ -149,6 +149,9 @@ - (instancetype)init _concurrentOperationQueue = [[NSOperationQueue alloc] init]; _concurrentOperationQueue.name = @"PINRemoteImageManager Concurrent Operation Queue"; _concurrentOperationQueue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount; +#if defined(__IPHONE_8_0) + _concurrentOperationQueue.qualityOfService = NSQualityOfServiceBackground; +#endif _urlSessionTaskQueue = [[NSOperationQueue alloc] init]; _urlSessionTaskQueue.name = @"PINRemoteImageManager Concurrent URL Session Task Queue"; _urlSessionTaskQueue.maxConcurrentOperationCount = 10; @@ -1241,6 +1244,12 @@ - (void)pin_addOperationWithQueuePriority:(PINRemoteImageManagerPriority)priorit { NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:block]; operation.queuePriority = operationPriorityWithImageManagerPriority(priority); + operation.qualityOfService = NSOperationQualityOfServiceBackground; +#if defined(__IPHONE_8_0) + operation.qualityOfService = NSQualityOfServiceBackground; +#else + operation.threadPriority = 0.2; +#endif [self addOperation:operation]; } From 5036a7144672af8c593ba88cce37c782de8b049b Mon Sep 17 00:00:00 2001 From: Garrett Moon Date: Sat, 1 Aug 2015 12:43:26 -0700 Subject: [PATCH 2/2] Remove extra qualityOfService set --- Pod/Classes/PINRemoteImageManager.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Pod/Classes/PINRemoteImageManager.m b/Pod/Classes/PINRemoteImageManager.m index 312be40e..4f905cf1 100644 --- a/Pod/Classes/PINRemoteImageManager.m +++ b/Pod/Classes/PINRemoteImageManager.m @@ -1244,9 +1244,8 @@ - (void)pin_addOperationWithQueuePriority:(PINRemoteImageManagerPriority)priorit { NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:block]; operation.queuePriority = operationPriorityWithImageManagerPriority(priority); - operation.qualityOfService = NSOperationQualityOfServiceBackground; #if defined(__IPHONE_8_0) - operation.qualityOfService = NSQualityOfServiceBackground; + operation.qualityOfService = NSOperationQualityOfServiceBackground; #else operation.threadPriority = 0.2; #endif