मैं स्विफ्ट प्रोग्रामिंग भाषा मैनुअल पढ़ रहा हूं और यह एक भागने बंद करने का उल्लेख करता है। बंद होने से बचने के संबंध में, मुझे नहीं पता कि उनका मतलब क्या है "बंद करने के लिए कार्य को तर्क के रूप में पारित किया जाता है, लेकिन फ़ंक्शन रिटर्न के बाद कहा जाता है।" क्या कोई बंद होने से बचने पर एक उदाहरण प्रदान कर सकता है?स्विफ्ट में एक बच निकलने का एक अच्छा उदाहरण क्या है?
6
A
उत्तर
2
एक भागने बंद का एक उदाहरण कुछ अतुल्यकालिक कार्य में, इस तरह के एक नेटवर्क अनुरोध भेजने के रूप में पूरा होने हैंडलर होगा:
func performRequest(parameters: [String: String], completionHandler: (NSData?, NSError?) ->()) {
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(parameters, options: [])
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
completionHandler(data, error)
}
task.resume()
}
और यह इसलिए की तरह कहा जाता है:
performRequest(["foo" : "bar"]) { data, error in
guard error == nil else {
print(error)
return
}
// now use data here
}
// Note: The `completionHandler` above runs asynchronously, so we
// get here before the closure is called, so don't try to do anything
// here with `data` or `error`. Any processing of those two variables
// must be put _inside_ the closure above.
यह completionHandler
बंद होने से बचने के लिए माना जाता है क्योंकि NSURLSession
विधि dataTaskWithRequest
असीमित रूप से चलाता है (यानी यह तुरंत लौटाता है और अनुरोध समाप्त होने पर बाद में बंद हो जाएगा)।
2
स्विफ्ट में 3 बंद पैरामीटर डिफ़ॉल्ट रूप से गैर-भागने बन जाते हैं।
हमें पैरामीटर रिटर्न के बाद बंद करने के लिए पैरामीटर प्रकार को इंगित करने के लिए पैरामीटर प्रकार से पहले @escaping
बंद करने की विशेषता लिखनी होगी।
typealias Operation = (Data?) ->()
func addToQueue(data: Data?, operation: @escaping Operation) {
OperationQueue.main.addOperation {
operation(data)
}
}
अगर हम @escaping
विशेषता निकालने के लिए, Xcode
संबंधित मुद्दे
- 1. एकाधिक विरासत: एक अच्छा उदाहरण क्या है?
- 2. जावा स्विंग एप्लिकेशन का एक अच्छा उदाहरण क्या है?
- 3. चींटी सर्वोत्तम प्रथाओं का एक अच्छा उदाहरण
- 4. Cont का monad उदाहरण क्या अच्छा है?
- 5. उदाहरण के लिए एक अच्छा अभ्यास है?
- 6. जेएस में इवेंट कन्स्ट्रक्टर का उपयोग करने का एक अच्छा उदाहरण क्या है?
- 7. स्विफ्ट प्रोजेक्ट में एक कस्टम यूआईसीओलर पेश करने का सबसे अच्छा तरीका क्या है?
- 8. क्या यह एक एसक्यूएल इंजेक्शन अटैक का एक उदाहरण है?
- 9. सी में रजिस्टर परिवर्तनीय उपयोग का एक अच्छा उदाहरण क्या है?
- 10. जावास्क्रिप्ट-भारी एप्लिकेशन में एसईओ-मित्रता प्राप्त करने की रणनीति का एक अच्छा उदाहरण क्या है?
- 11. बूस्ट :: एल्गोरिदम के लिए एक अच्छा उदाहरण ::
- 12. पहलू उन्मुख तकनीकों का उपयोग करके लिखे गए प्रोग्राम का एक अच्छा उदाहरण क्या है?
- 13. क्या यह वास्तव में एडाप्टर पैटर्न का एक उदाहरण है?
- 14. स्विफ्ट: एक .swift-version फ़ाइल क्या है?
- 15. रूबी रेगेक्स में मैं बच निकलने वाला चरित्र ("बच निकला नहीं" चरित्र कैसे लगा सकता हूं?
- 16. जावा 8 S4U2Proxy का उपयोग करना - एक अच्छा उदाहरण
- 17. क्या कोई अच्छा UITabBarController उदाहरण है?
- 18. क्या कोई अच्छा SimpleSAMLphp एसएलओ उदाहरण है?
- 19. मार्चिंग क्यूब्स को कार्यान्वित करने का एक अच्छा उदाहरण कोड?
- 20. क्या रैकेट "ब्रह्मांड" एफआरपी का एक उदाहरण सिखाता है?
- 21. सामान्य प्रकार के स्थिर संग्रहित गुणों के लिए स्विफ्ट में एक अच्छा विकल्प क्या है?
- 22. धारा का उदाहरण :: अच्छा गलत है?
- 23. क्या मोनाड का एक उदाहरण है लेकिन मोनाडफिक्स का नहीं?
- 24. लैम्ब्डा स्पष्टीकरण और यह एक अच्छा उदाहरण है
- 25. क्या एक Node.js स्क्रिप्ट बाहर निकलने के लिए एक अच्छा तरीका है के बाद "सब कुछ किया गया है"
- 26. ओपन-सोर्स जावा-गेम का अच्छा उदाहरण क्या है?
- 27. ब्रैकेट से बच [एक कंटेनस() खंड में?
- 28. सी # में यूनिट परीक्षण का एक उदाहरण?
- 29. जावास्क्रिप्ट में एक परिपत्र संदर्भ का उदाहरण?
- 30. संग्रह वर्ग के लिए __eq__ विधि का एक अच्छा उदाहरण क्या है?
काफी स्पष्ट उत्तर नीचे त्रुटि संदेश दिखाई देगा, समझने के लिए जहाँ मेरा मुद्दा था मदद की। मेरे पास 3-4 लेवल क्लोजर थे, इसलिए यह समझना मुश्किल था कि वास्तव में '@ एस्केपिंग' कहाँ रखा जाना चाहिए। – Jonauz