Junior — Middle
Կարող եք նշել և բացատրել iOS-ում DispatchGroup-ի հիմնական մեթոդները?
sobes.tech AI
Պատասխան AI-ից
DispatchGroup iOS-ում օգտագործվում է մի քանի ասինխրոն աշխատանքների խմբավորելու և դրանց ավարտը հետևելու համար: 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-ի բլոկը կանչվում է: Այս մոտեցումը հեշտացնում է մի քանի ասինխրոն գործողությունների սինխրոնիզացիան։