दिलचस्प पोस्ट
पारदर्शी पाठ पृष्ठभूमि से बाहर कट गया क्या अप्रयुक्त फ़ंक्शन ऑप्टिमाइज़ हो रहे हैं? मैं कैसे जांच सकता हूँ कि जावास्क्रिप्ट चर फ़ंक्शन प्रकार है? कैसे PHP चर के लिए jQuery चर पारित करने के लिए? कस्टम दृश्य के लिए UIMenuController कैसे काम करें? जावास्क्रिप्ट के साथ क्वेरी स्ट्रिंग कैसे बनाएं जावास्क्रिप्ट या (||) चर असाइनमेंट स्पष्टीकरण जावा टाइमर बनाम निष्पादक सेवा? स्थैतिक परिभाषा के बारे में सिंगल पेज एप्लीकेशन: फायदे और नुकसान कैसे पीडीओ के बाहर त्रुटि संदेश निचोड़? फार्म के साथ Django वर्ग आधारित दृश्य ListView एकाधिक CSS कक्षाओं के साथ HTML तत्व कैसे प्राप्त करें WHERE खंड में संदर्भ उपनाम (चयन में गणना) हेक्स को एनएसएसटीइंग के उद्देश्य-सी में कैसे रूपांतरित करना है?

स्विफ्ट 3 में प्रेषण कतार कैसे बनाएं

स्विफ्ट 2 में, मैं निम्नलिखित कोड के साथ कतार बनाने में सक्षम था:

let concurrentQueue = dispatch_queue_create("com.swift3.imageQueue", DISPATCH_QUEUE_CONCURRENT) 

लेकिन यह स्विफ्ट 3 में संकलित नहीं करता है

स्विफ्ट 3 में यह लिखने का पसंदीदा तरीका क्या है?

Solutions Collecting From Web of "स्विफ्ट 3 में प्रेषण कतार कैसे बनाएं"

एक समवर्ती कतार बनाना

 let concurrentQueue = DispatchQueue(label: "queuename", attributes: .concurrent) concurrentQueue.sync { } 

सीरियल कतार बनाएं

 let serialQueue = DispatchQueue(label: "queuename") serialQueue.sync { } 

मुख्य कतार में एसिंक्रोनस प्राप्त करें

 DispatchQueue.main.async { } 

मुख्य कतार को समन्वयित करें

 DispatchQueue.main.sync { } 

पृष्ठभूमि थ्रेड में से एक प्राप्त करने के लिए

 DispatchQueue.global(qos: .background).async { } 

Xcode 8.2 बीटा 2:

पृष्ठभूमि थ्रेड में से एक प्राप्त करने के लिए

 DispatchQueue.global(qos: .default).async { } DispatchQueue.global().async { // qos' default value is ´DispatchQoS.QoSClass.default` } 

यदि आप इन कतारों का उपयोग करने के बारे में जानना चाहते हैं तो यह उत्तर देखें

स्विफ्ट 3 के तहत संकलन इस उदाहरण में हमारी सबसे अधिक सिंटैक्स की ज़रूरत है

क्यूओएस – सेवा वाक्यविन्यास की नई गुणवत्ता

weak self – बनाए रखने के चक्र को बाधित

अगर स्वयं उपलब्ध नहीं है, तो कुछ नहीं करें

async global background queue – नेटवर्क क्वेरी के लिए

async main queue – UI को छूने के लिए

बेशक, आपको इस पर कुछ त्रुटि जांच करने की आवश्यकता है …

 DispatchQueue.global(qos: .background).async { [weak self] () -> Void in guard let strongSelf = self else { return } strongSelf.flickrPhoto.loadLargeImage { loadedFlickrPhoto, error in if error != nil { print("error:\(error)") } else { DispatchQueue.main.async { () -> Void in activityIndicator.removeFromSuperview() strongSelf.imageView.image = strongSelf.flickrPhoto.largeImage } } } } 

एक्सकोड 8, स्विफ्ट 3 में संकलित किया गया https://github.com/rpthomas/Jedisware

  @IBAction func tap(_ sender: AnyObject) { let thisEmail = "emailaddress.com" let thisPassword = "myPassword" DispatchQueue.global(qos: .background).async { // Validate user input let result = self.validate(thisEmail, password: thisPassword) // Go back to the main thread to update the UI DispatchQueue.main.async { if !result { self.displayFailureAlert() } } } } 

मैंने यह किया और यह विशेष रूप से महत्वपूर्ण है अगर आप अपने यूआई को रीफ़्रेश करना चाहते हैं तो यूआईटीबल्यूव्यू या यूआईपीकिव्यू में यूज़र नोटिफिकेशन के बिना नए डेटा दिखाने के लिए।

  DispatchQueue.main.async { /*Write your thread code here*/ } 
  let concurrentQueue = dispatch_queue_create("com.swift3.imageQueue", DISPATCH_QUEUE_CONCURRENT) //Swift 2 version let concurrentQueue = DispatchQueue(label:"com.swift3.imageQueue", attributes: .concurrent) //Swift 3 version 

मैंने आपके कोड को एक्सकोड 8, स्विफ्ट 3 में फिर से काम किया है और आपके स्विफ्ट 2 संस्करण के विपरीत बदलावों को चिह्नित किया गया है।

  DispatchQueue.main.async { self.collectionView?.reloadData() // Depends if you were populating a collection view or table view } OperationQueue.main.addOperation { self.lblGenre.text = self.movGenre } 

// ऑपरेशन कतार का उपयोग करें यदि आप अपने दृश्य नियंत्रक पर ऑब्जेक्ट्स (लेबल, छवि दृश्य, पाठदृश्य) को पॉप्यूल करने की आवश्यकता है

स्विफ्ट 3

आप स्विफ्ट कोड में कुछ बंद कॉल करना चाहते हैं, तो आप स्टोरीबोर्ड में बदलना चाहते हैं या फिर किसी भी प्रकार के परिवर्तन को बदलना आपके ऐप्लिकेशन को देखने के लिए क्रैश होगा

लेकिन आप प्रेषण पद्धति का उपयोग करना चाहते हैं, आपका एप्लिकेशन क्रैश नहीं होगा

async विधि

 DispatchQueue.main.async { //Write code here } 

सिंक विधि

 DispatchQueue.main.sync { //Write code here } 

स्विफ्ट 3 के लिए

  DispatchQueue.main.async { // Write your code here } 
  let newQueue = DispatchQueue(label: "newname") newQueue.sync { // your code } 

आप स्विफ्ट 3.0 में इस कोड का उपयोग करके प्रेषण कतार बना सकते हैं

 DispatchQueue.main.async { /*Write your code here*/ } /* or */ let delayTime = DispatchTime.now() + Double(Int64(0.5 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC) DispatchQueue.main.asyncAfter(deadline: delayTime) { /*Write your code here*/ } 
 DispatchQueue.main.async(execute: { // write code }) 

सीरियल कतार:

 let serial = DispatchQueue(label: "Queuename") serial.sync { //Code Here } 

समवर्ती कतार:

  let concurrent = DispatchQueue(label: "Queuename", attributes: .concurrent) concurrent.sync { //Code Here } 
 DispatchQueue.main.async(execute: { // code }) 

यह अब बस है:

 let serialQueue = DispatchQueue(label: "my serial queue") 

डिफ़ॉल्ट धारावाहिक है, समवर्ती होने के लिए, आप वैकल्पिक विशेषताओं तर्क का उपयोग करते हैं .concurrent