Sobes.tech
Junior — Middle

Когда допустимо выполнять обновление пользовательского интерфейса вне основного потока исполнения?

sobes.tech AI

Ҷавоб аз AI

Дар iOS навсозии интерфейси корбар бояд танҳо дар ҷараёни асосӣ (ҳамин) иҷро шавад, зеро UIKit бехатар барои ҷараён нест. Истифодаи механизми махсус ё рамкаҳо, ки имкон медиҳанд, ки UI-ро асинхрон навсозӣ кунанд, метавонад истисно бошад, аммо дар зери капот онҳо ҳамеша ба ҷараёни асосӣ мегузаранд.

Масалан, агар шумо маълумотҳоро дар ҷараёни пасзамина бор кунед, пас аз гирифтани натиҷа бояд ба ҷараёни асосӣ гузаред, то UI-ро навсозӣ кунед:

DispatchQueue.global().async {
    // Боркунии маълумот
    let data = loadData()
    DispatchQueue.main.async {
        // Навсозии UI
        self.label.text = data
    }
}

Аз ин рӯ, навсозии UI дар беруни ҷараёни асосӣ танҳо дар ҳолате иҷозат дода мешавад, ки шумо ба таври равшан ба ҷараёни асосӣ баргардед пеш аз тағир додани унсурҳои интерфейс.