मैं एप्पल के दस्तावेज़ीकरण को देखकर उलझन में हूं और कोको डिजाइन पैटर्न के माध्यम से पढ़ रहा हूं। copyWithZone:
के लिए एप्पल प्रलेखन में, इसे पढ़ता है:कॉपी या कॉपी ओवरराइड WithZone: या दोनों?
इस विधि से मौजूद है तो वर्ग ऑब्जेक्ट स्थितियों में, जहां आप एक वस्तु है कि NSCopying प्रोटोकॉल के अनुरूप की जरूरत में इस्तेमाल किया जा सकता है। उदाहरण के लिए, यह विधि आपको क्लास ऑब्जेक्ट को NSDictionary ऑब्जेक्ट की कुंजी के रूप में उपयोग करने देती है। आपको इस विधि को ओवरराइड नहीं करना चाहिए।
copy
के लिए इसे पढ़ता है:
यह कक्षाएं कि NSCopying प्रोटोकॉल को अपनाने के लिए एक सुविधा विधि है। कॉपीविथज़ोन: के लिए कोई कार्यान्वयन नहीं होने पर अपवाद उठाया जाता है।
एनएसओब्जेक्ट स्वयं एनएससीपीआईपी प्रोटोकॉल का समर्थन नहीं करता है। उपclasses प्रोटोकॉल का समर्थन करना चाहिए और copyWithZone: विधि को लागू करना चाहिए। एक कॉपी विथज़ोन का सबक्लास संस्करण: विधि को पहले से ही संदेश को इसके कार्यान्वयन को शामिल करने के लिए संदेश भेजना चाहिए, जब तक कि सबक्लास सीधे NSObject से उतरता है।
कोको डिजाइन पैटर्न में उदाहरण के लिए, वे copyWithZone:
और mutableCopyWithZone:
ओवरराइड लेकिन जब NSCopying
प्रोटोकॉल के अनुरूप copy
ओवरराइड नहीं करें। क्या मुझे ऐसा करना चाहिए यदि मैं अपने कस्टम उप-वर्ग को NSDictionary
में कुंजी के रूप में उपयोग करना चाहता हूं?
या क्या मैं copy
ओवरराइड करता हूं?
इसी तरह, अगर मैं [myClass copy]
करता हूं, तो क्या यह मेरे कस्टम सबक्लास के लिए copyWithZone:
या copy
पर कॉल करता है? धन्यवाद।