मैं अनौपचारिक प्रोटोकॉल और वास्तविक प्रोटोकॉल के बारे में कुछ मूल बातें पढ़ रहा हूं। मुझे क्या भ्रमित करता है, कि कोको एनएसओब्जेक्ट पर कई अनौपचारिक प्रोटोकॉल का उपयोग करता प्रतीत होता है। उन अनौपचारिक प्रोटोकॉल NSObject पर श्रेणियां हैं जो विधियों की घोषणा करते हैं, लेकिन वास्तव में उन्हें लागू नहीं करते हैं।NSObject पर अनौपचारिक प्रोटोकॉल या वैकल्पिक विधियों के साथ प्रोटोकॉल का उपयोग करने के बीच क्या अंतर है?
जहां तक मुझे यह सही लगता है, एकमात्र कारण यह अनौपचारिक प्रोटोकॉल का उपयोग करता है (दूसरे शब्दों में, एनएसओब्जेक्ट पर श्रेणियां जो विधि कार्यान्वयन प्रदान नहीं करती हैं), एक्सकोड में स्वत: पूर्णता देने के लिए है।
एक उदाहरण है NSCibLoading.h में परिभाषित -awakeFromNib विधि, जो NSObject पर एक अनौपचारिक प्रोटोकॉल है। यदि कोई ऑब्जेक्ट उस विधि को लागू करता है तो निब लोडिंग सिस्टम रनटाइम पर जांचता है। अगर ऐसा होता है, तो यह इसे कॉल करता है।
लेकिन अब कल्पना करें कि अनौपचारिक प्रोटोकॉल नामक कोई सुविधा नहीं थी। जिस विकल्प का सटीक प्रभाव होगा, वह असली @ प्रोोटोकॉल घोषणा होगी जो एक वैकल्पिक विधि -awakeFromNib घोषित करता है। NSObject बस उस प्रोटोकॉल को अपनाने वाला होगा और संकलक खुशी से स्वत: पूर्णता प्रदान करेगा।
क्या कोई इन दोनों रणनीतियों के बीच बड़ा अंतर बता सकता है? मुझे अनौपचारिक प्रोटोकॉल का बिंदु नहीं दिख रहा है लेकिन वास्तव में ऐसा करना पसंद करेंगे।
मैं देखता हूं। अनौपचारिक प्रोटोकॉल अतीत से आते हैं जहां कोई वैकल्पिक प्रोटोकॉल विधियां नहीं थीं। अब यह समझ में आता है। –
मैंने अपने उत्तर को यह भी स्पष्ट रूप से बताया कि अनौपचारिक प्रोटोकॉल विरासत का एक उत्पाद है। – PeyloW