2012-07-16 15 views
12

मैं कुछ वस्तुओं के सभी उदाहरणों के लिए कुछ तरीकों को जोड़ने के तरीके की योजना बनाने की कोशिश कर रहा हूं। मुझे लगता है कि पैरेंट ऑब्जेक्ट (UIViewController) में एक श्रेणी जोड़ना मैं जो करना चाहता हूं उसके लिए काम करेगा, लेकिन क्या मैं इस तरह से जोड़ा गया एक तरीका ओवरराइड कर सकता हूं? अधिकांश समय उप-वर्ग डिफ़ॉल्ट विधियों का उपयोग करेंगे लेकिन मुझे पता है कि मुझे कम से कम एक बार विधि को ओवरराइड करने की आवश्यकता होगी।क्या श्रेणी विधियों को ओवरराइड किया जा सकता है? आईओएस

मैं जो भी करने की कोशिश कर रहा हूं उसके लिए मुझे अन्य तरीकों पर विचार करना चाहिए?

मुझे क्या करना है कोशिश कर रहा हूँ का उदाहरण:

मैं वस्तुओं है कि एक पत्रिका के पन्नों की तरह काम का एक सेट है। ये पृष्ठ UIViewControllers के उप-वर्ग हैं। मैं लोडिंग, सेविंग और इसी तरह के तरीकों को जोड़ना चाहता हूं। जर्नल क्लास (एनएसओब्जेक्ट के सबक्लास) में मेरे पास प्रत्येक जर्नल पेज के उदाहरणों को संग्रहित करने वाला एक सरणी है। मुझे यह चाहिए कि मैं सरणी से एक पृष्ठ का चयन कर सकता हूं और विशिष्ट ऑब्जेक्ट क्लास को जानने के बिना विधियों पर चला सकता हूं क्योंकि उनमें सभी के पास विधियां होनी चाहिए।

उत्तर

22

संक्षिप्त उत्तर: हाँ, आप कर सकते हैं। सुपरक्लास पर विरासत श्रेणी विधियों के प्रयोजनों के लिए उन तरीकों से व्यवहार किया जाता है जिन्हें वास्तव में सुपरक्लास में परिभाषित किया जाता है, और उसी तरह से ओवरराइड किया जा सकता है।

+0

यह समझ में आता है, लेकिन मुझे लगता है कि लंबा जवाब कुछ ऐसा कह सकता है जैसे "ऐप्पल इस के लिए अनुमोदित नहीं है" या ऐसा कुछ और। – RMDan

+8

ऐप्पल सुपरक्लास में एक विधि को ओवरराइड करने के लिए उप-वर्ग पर एक श्रेणी का उपयोग करने की स्वीकृति नहीं देता है, लेकिन सुपरक्लास पर किसी श्रेणी को ओवरराइड करने के लिए सबक्लास में किसी विधि का उपयोग करने में कुछ भी गलत नहीं है। वास्तव में, जब भी आप एक ढांचे वर्ग को उपclass करते हैं, तो यह एक अच्छा मौका है कि आप इसे महसूस किए बिना ऐसा कर रहे हैं। –

+0

उत्तर के लिए धन्यवाद, लेकिन मुझे जो चाहिए वह करने का एक बेहतर तरीका मिला। आपके उत्तर में कुछ भी गलत नहीं है, बस मेरे कोड को देखा और विधियों को जोड़ने के बिना आवश्यक अतिरिक्त कोड करने के लिए एक beter spot पाया। – RMDan

संबंधित मुद्दे