Вы не можете вызывать операции UIKit в фоновом потоке.Я бы посоветовал вам получить данные в фоновом потоке, а затем обновить их в основном потоке.
Использовать блоки для простоты кодирования,
Как только вы получите NSData в фоновом потоке, просто назначьте егоUIImage и т. д. в главном потоке через блоки,
//get NSData from URL
dispatch_async(dispatch_get_main_queue(), ^{
//set assignments for UIImage here.
});