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 дар беруни ҷараёни асосӣ танҳо дар ҳолате иҷозат дода мешавад, ки шумо ба таври равшан ба ҷараёни асосӣ баргардед пеш аз тағир додани унсурҳои интерфейс.