คำถามติดแท็ก dispatch-async

6
ฉันจะ dispatch_sync, dispatch_async, dispatch_after และอื่น ๆ ใน Swift 3, Swift 4 และอื่น ๆ ได้อย่างไร
ฉันมีโค้ดจำนวนมากในโครงการ Swift 2.x (หรือ 1.x) ที่มีลักษณะดังนี้: // Move to a background thread to do some long running work dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { let image = self.loadOrGenerateAnImage() // Bounce back to the main thread to update the UI dispatch_async(dispatch_get_main_queue()) { self.imageView.image = image } } หรือสิ่งนี้เพื่อชะลอการดำเนินการ: dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.5 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { …

3
ทำความเข้าใจกับ dispatch_async
ฉันมีคำถามเกี่ยวกับรหัสนี้ dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData* data = [NSData dataWithContentsOfURL: kLatestKivaLoansURL]; [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES]; }); พารามิเตอร์แรกของรหัสนี้คือ dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) เรากำลังขอรหัสนี้เพื่อทำงานแบบอนุกรมในคิวทั่วโลกที่มีความหมายว่ามันจะส่งกลับพร้อมกันทั่วโลกคิวในระดับความสำคัญที่กำหนด? อะไรคือข้อดีของการใช้dispatch_get_global_queueคิวหลัก? ฉันสับสน. คุณช่วยฉันเข้าใจเรื่องนี้ให้ดีขึ้นได้ไหม

6
iPhone - Grand Central Dispatch หัวข้อหลัก
ฉันใช้กับความสำเร็จการจัดส่งส่วนกลางที่ยิ่งใหญ่ในแอพของฉัน แต่ฉันสงสัยว่าประโยชน์ที่แท้จริงของการใช้บางสิ่งเช่นนี้คืออะไร: dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff หรือแม้กระทั่ง dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff ฉันหมายถึงในทั้งสองกรณีคุณกำลังทำการบล็อกบล็อกที่จะถูกดำเนินการบนเธรดหลักตรงที่แอพทำงานและนี่จะไม่ช่วยลดภาระ ในกรณีแรกคุณไม่มีการควบคุมใด ๆ เมื่อบล็อกจะทำงาน ฉันได้เห็นกรณีของบล็อกถูกประหารชีวิตครึ่งวินาทีหลังจากที่คุณยิงพวกเขา กรณีที่สองมันคล้ายกับ [self doStuff]; ขวา? ฉันสงสัยว่าพวกคุณคิดอย่างไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.