1 if ([NSThread isMainThread]) 2 { 3 [self.downloadMapBtn setImage:[UIImage imageNamed:@"download_map.png"] forState:UIControlStateNormal]; 4 [self.downloadMapBtn setNeedsDisplay]; 5 } 6 else 7 { 8 dispatch_sync(dispatch_get_main_queue(), ^{ 9 //Update UI in UI thread here 10 [self.downloadMapBtn setImage:[UIImage imageNamed:@"download_map.png"] forState:UIControlStateNormal]; 11 [self.downloadMapBtn setNeedsDisplay]; 14 }); 15 }