आज जब मैं अपने 'कोरडाटा आयात संचालन' को सामान्यीकृत करने की कोशिश कर रहा था, तो मैंने एक अजीब मुद्दा पूरा किया है। ऐसा प्रतीत होता है कि यदि मैं NSOperation का एक सामान्य उप-वर्ग बनाता हूं तो main()
func नहीं कहा जाएगा।जेनेरिक एनएसओपरेशन सबक्लास एनएसओपरेशन कार्यक्षमता खो देता है
सरल उदाहरण:
class MyOperation<T: NSObject>: NSOperation {
override func main() {
println("My operation main was called")
}
}
आप इस वर्ग का एक उदाहरण बना सकते हैं और करने के लिए उसे जोड़ें operationQueue
आप इसे main()
वास्तव में नहीं बुलाया जाता है कि देखेंगे।
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.operationQueue = NSOperationQueue()
let operation = MyOperation<NSString>()
self.operationQueue!.addOperation(operation)
}
ऑपरेशन बस ready
से executing
करने और finished
राज्य के लिए main()
बुला बिना संक्रमण।
यदि मैं MyOperation
कक्षा से सामान्य एनोटेशन <T: NSObject>
हटा देता हूं तो यह ठीक काम करेगा।
यह कैसे संभव है? क्या मुझे यहां कुछ याद आ रही है?
स्पष्टीकरण के लिए धन्यवाद। यह दुख की बात है कि हम उद्देश्य-सी के साथ स्विफ्ट में इतनी शक्तिशाली तकनीक का उपयोग नहीं कर सकते हैं। इस विशेष मामले में, 'सामान्यीकृत' संचालन कोड के कुछ हिस्सों का पुन: उपयोग करने में मदद कर सकता है। अच्छी तरह से हाँ। :/ – Nevs12