मेरे पास एक उद्देश्य-सी प्रोटोकॉल है जिसका उपयोग ज्यादातर उद्देश्य-सी ऑब्जेक्ट्स और एक या दो स्विफ्ट ऑब्जेक्ट्स द्वारा किया जाता है।ओबीजेसी प्रोटोकॉल पर प्रोटोकॉल एक्सटेंशन
मैं स्विफ्ट में प्रोटोकॉल का विस्तार करना चाहता हूं और 2 फ़ंक्शन जोड़ना चाहता हूं। अधिसूचना को संभालने के लिए अधिसूचना के लिए पंजीकरण करने के लिए एक और दूसरा।
अगर मैं इन
func registerForPresetLoadedNotification() {
NSNotificationCenter.defaultCenter().addObserver(self as AnyObject,
selector: #selector(presetLoaded(_:)),
name: kPresetLoadedNotificationName,
object: nil)
}
func presetLoaded(notification: NSNotification) {
}
मैं #selector जो कहते हैं Argument of '#selector' refers to a method that is not exposed to Objective-C
मैं तो presetLoaded चिह्नित करते हैं @objc
के रूप में मैं एक त्रुटि जो कहते हैं @objc can only be used with members of classes, @objc protocols, and concrete extensions of classes
मैं भी मिलता है पर एक त्रुटि प्राप्त जोड़ने प्रोटोकॉल एक्सटेंशन को @objc
के रूप में चिह्नित नहीं कर सकता जब मैं एक स्विफ्ट के रूप में उद्देश्य-सी प्रोटोकॉल बनाता हूं प्रोटोकॉल मुझे एक ही त्रुटि मिलती है।
क्या यह हासिल करने का कोई तरीका है जो प्रोटोकॉल का उपयोग करने वाले उद्देश्य-सी और स्विफ्ट कक्षाओं के लिए काम करेगा?
प्रोटोकॉल को विस्तारित करने और _optional_ कार्यों के रूप में इन कार्यों को परिभाषित करने के बारे में कैसे करें उद्देश्य-सी में और स्विफ्ट में उन्हें लागू करना? सिर्फ एक विचार। – skim
मेरा विचार विस्तार में रजिस्टर फ़ंक्शन को कार्यान्वित करना था और फिर उद्देश्य-सी और त्वरित कक्षाओं में अधिसूचना हैंडलर फ़ंक्शन को ओवरराइड करना था। मुझे उद्देश्य-सी कक्षाओं में पैरामीटर सेट करने की आवश्यकता है, उन्हें स्विफ्ट वेंट काम में लागू करना। – jarryd
मुझे यकीन नहीं है कि मैं आपको सही ढंग से समझता हूं। ऐसा लगता है कि आप जो करना चाहते हैं वह विस्तारित है (मौजूदा प्रोटोकॉल में फ़ंक्शंस जोड़ें) और ओबीजेसी में एक डिफ़ॉल्ट कार्यान्वयन प्रदान करें और स्विफ्ट में उस कार्यान्वयन के एक हिस्से को ओवरराइड करें। क्या ये सही है? – skim