Sobes.tech
Junior — Middle

შეგიძლიათ ჩამოთვალოთ და ახსნათ iOS-ში DispatchGroup-ის ძირითადი მეთოდები?

sobes.tech AI

პასუხი AI-სგან

iOS-ში DispatchGroup გამოიყენება რამდენიმე ასინქრონული დავალების ჯგუფურად გაერთიანებისა და მათი დასრულების მონიტორინგისთვის. DispatchGroup-ის ძირითადი მეთოდები და გამოყენების გზები:

  • enter() — აცნობებს ჯგუფს, რომ ახალი დავალება დაიწყო. უნდა გამოიძახოს, თუ დავალება ხელით იწყება და არა group.async-ის საშუალებით.
  • leave() — აცნობებს ჯგუფს, რომ დავალება დასრულდა. leave()-ის გამოძახებების რაოდენობა უნდა ემთხვეოდეს enter()-ის რაოდენობას.
  • notify(queue: DispatchQueue, execute: () -> Void) — ადგენს კოდს, რომელიც შესრულდება მითითებულ რიგში, როდესაც ყველა დავალება ჯგუფში დასრულდება.
  • wait(timeout:) — სინქრონულად ელოდება, სანამ ყველა დავალება ჯგუფში დასრულდება ან დრო გასცდება.

გამოყენების მაგალითი:

let group = DispatchGroup()

let queue = DispatchQueue.global()

group.enter()
queue.async {
    // ასინქრონული დავალება 1
    print("დავალება 1 დაიწყო")
    sleep(2)
    print("დავალება 1 დასრულდა")
    group.leave()
}

group.enter()
queue.async {
    // ასინქრონული დავალება 2
    print("დავალება 2 დაიწყო")
    sleep(1)
    print("დავალება 2 დასრულდა")
    group.leave()
}

group.notify(queue: DispatchQueue.main) {
    print("ყველა დავალება დასრულდა")
}

ამ მაგალითში ორი დავალება პარალელურად ხორციელდება, და მათი დასრულების შემდეგ, notify-ში განთავსებული ბლოკი იძახება. ეს მეთოდი მარტივად აერთიანებს რამდენიმე ასინქრონულ ოპერაციას.