Sobes.tech
Junior — Middle

Дар истифодаи MainActor бояд чӣ дастурҳо риоя шаванд?

sobes.tech AI

Ҷавоб аз AI

@MainActor дар Swift истифода мешавад, барои нишон додан, ки код бояд дар нахустин сатр иҷро шавад, ки барои навсозии UI ва дигар амалҳое, ки талаб мекунанд, ки дар нахустин сатр иҷро шаванд, муҳим аст. Нусхаҳои асосӣ ҳангоми истифодаи MainActor:

  • Классҳо, структураҳо, функсияҳо ё хусусиятҳоро бо @MainActor нишон диҳед, то иҷро дар нахустин сатр кафолат дода шавад.
  • Барои функсияҳои асинхронӣ, метавонед @MainActor-ро бо async истифода баред.
  • Агар функсияе, ки бо @MainActor нишон дода шудааст, аз сатрҳои дигар даъват шавад, истифода баред await барои гузаштан ба нахустин сатр.

Масалан:

@MainActor
class ViewModel {
    var title: String = ""

    func updateTitle() {
        title = "Навсозӣ шуд"
    }
}

func someBackgroundTask() async {
    let vm = ViewModel()
    await vm.updateTitle() // гузаштан ба нахустин сатр
}

Инчунин, @MainActor кӯмак мекунад, ки хатогиҳо, ки бо навсозии UI дар сатрҳои ғайри асосӣ алоқаманданд, пешгирӣ шаванд.