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-ში განთავსებული ბლოკი იძახება. ეს მეთოდი მარტივად აერთიანებს რამდენიმე ასინქრონულ ოპერაციას.