首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 後台線程更新 UIImageView 必須回主線程的正確寫法

     編輯:程式設計綜合問答

GCD 後台線程中下載圖片並直接賦值給 UIImageView,導致界面不更新或崩潰。

錯誤代碼

dispatch_async(dispatch_get_global_queue(...), ^{
    UIImage *img = [UIImage imageNamed:...];
    [self.loadingImage setImage:img]; // 非主線程操作 UI
});

修正代碼

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    UIImage *img = [UIImage imageNamed:numberString];
    dispatch_async(dispatch_get_main_queue(), ^{
        [self.loadingImage setImage:img]; // 回主線程更新 UI
    });
});

原則

所有 UIKit 操作必須在主線程執行。後台線程僅用於耗時計算、網絡請求、圖片解碼等。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved