जीसीडी पर स्विफ्ट 3 विकास पढ़ने के बाद, मैं प्रेषण समूह बनाने की कोशिश कर रहा हूं। समस्या group.notify(queue:
है जब मैं DispatchQueue.main
को कतार के रूप में पास करता हूं, तो यह सूचित नहीं करता है, हालांकि यह पृष्ठभूमि कतार के लिए काम करता है।डिस्पैच समूह - मुख्य धागे को सूचित नहीं कर सकता
इसके अलावा, मैं, यकीन है कि मेरे वाक्य रचना सब सही है नहीं कर रहा हूँ के रूप में मैं स्विफ्ट 3.
typealias CallBack = (result: Bool) -> Void
func longCalculations (completion: CallBack) {
let backgroundQ = DispatchQueue.global(attributes: .qosBackground)
let group = DispatchGroup()
var fill:[Int] = []
for item in 0...200 {
group.enter()
if item > 50 {
fill.append(item)
}
group.leave()
}
//Below in the notify argument If I pass `backgroundQ`, it seems to work correctly but not when DispatchQueue.main is passed.
को स्विफ्ट 2 से कोड में परिवर्तित करने कोशिश कर रहा हूँ इस कोड काम नहीं करते
group.notify(queue: DispatchQueue.main, execute: {
completion(result: true)
})
}
यह सही ढंग से काम करता है
group.notify(queue: backgroundQ, execute: {
completion(result: true)
})
}
_______________________________________________________
longCalculations() { print($0) }
क्या है कोड है कि _doesn't_ "सही ढंग से काम?" – matt
@ मैट, मैंने स्पष्टता के लिए प्रश्न संपादित किया है, जब मैं 'group.notify (queue: DispatchQueue.main, execute: {' समापन ब्लॉक कुछ भी नहीं लौटाता है ('बूल' मान मुद्रित करने में असमर्थ), जहां के रूप में मैं एक समवर्ती कतार 'पृष्ठभूमिक्यू' पास करता हूं, 'बूल' मान' सत्य 'वापस लौटाया जाता है और सही ढंग से मुद्रित किया जाता है' लंबी गणना() {प्रिंट ($ 0)} ' – jyet
आप 'एंटर' और 'छोड़' गलत तरीके से उपयोग कर रहे हैं। आप इस लेख को पढ़ने के लिए: http://amro.co/gcd-using-dispatch-groups-for-fun-and-profit – matt