2012-04-04 7 views
6

मैंने देखा कि स्टैनफोर्ड सीएस 1 9 3 पी पाठ्यक्रम के कैलकुलेटर डेमो में, आईबीओलेट कनेक्शन लेबल से हेडर फ़ाइल में खींचा गया था। हालांकि, IBAction कनेक्शन सीधे .m फ़ाइल में बनाया गया था। मैंने दस्तावेज़ों को पढ़ने और Google पर खोज करने की कोशिश की लेकिन इसके पीछे कारण नहीं मिला।आईओएस सीएस 1 9 3 पी - आईबीएक्शन कनेक्शन क्यों एमएम फाइल पर खींचा गया था और नहीं। एच?

मैं तर्क दूंगा कि IBAction digitPressed विधि हेडर फ़ाइल में भी घोषित किया जाना चाहिए (क्या यह इंटरफ़ेस का हिस्सा नहीं होना चाहिए?)।

मैं स्पष्ट रूप से उद्देश्य सी (ज्यादातर जावा में काम करता हूं) के लिए बिल्कुल नया हूं इसलिए मुझे यकीन है कि मुझे कुछ बुनियादी याद आ रहा है।

क्या कोई भी समझा सकता है?

उत्तर

8

किसी वर्ग की शीर्षलेख फ़ाइल में चीजों को घोषित करने से उन्हें सार्वजनिक इंटरफ़ेस का हिस्सा बन जाता है। इसमें व्यू कंट्रोलर पर परिभाषित आउटलेट और क्रियाएं शामिल हैं।

चाहे कुछ सार्वजनिक किया जाना चाहिए, एक डिजाइन सवाल है। एक अच्छा प्रिंसिपल है: केवल अगर यह होना चाहिए। ViewControllers आउटलेट और कार्रवाइयों के साथ, अक्सर नहीं, उन्हें होने की आवश्यकता नहीं है - और इसलिए सार्वजनिक नहीं होना चाहिए।

आमतौर पर ऐसा होता है कि आप सार्वजनिक अनुमानों के बारे में कुछ अनुमान लगाते हैं, तो (यदि आप एक साफ डेवलपर हैं) तो कार्यान्वयन परिपक्व होने पर और फिर कुछ भी अनिवार्य होने पर आप फिर से देखेंगे।

+3

.m फ़ाइल में आईबीओटलेट घोषित करने और उन्हें आईबी में लिंक करने में सक्षम होने के नाते काफी नया है। डेमो और ट्यूटोरियल सभी पकड़े नहीं गए हैं। यह निश्चित रूप से बेहतर समाधान है, और किसी अन्य ऑब्जेक्ट के आईबीओटलेट्स को संशोधित करने जैसे बहुत बुरे प्रथाओं से बचाता है (जिसे आपको कभी नहीं करना चाहिए)। –

+0

@ दहन, क्या आप समझा सकते हैं कि दुकानों और कार्यों को सार्वजनिक क्यों नहीं होना चाहिए? अगर ये सार्वजनिक नहीं हैं तो दृश्य इन नियंत्रकों में कैसे पहुंचता है? – Rahul

+1

यदि आप एमवीसी में स्कूली शिक्षा प्राप्त कर चुके हैं तो ViewController एक भ्रमित नाम हो सकता है। ऐसा नहीं है, जैसा कि आप सोच सकते हैं, उस संक्षिप्त नाम में दो सहकर्मियों की एक जोड़ी। इस बारे में सोचना बेहतर है कि एक दृश्य को नियंत्रित करता है। इस अर्थ में, किसी के विचार को निजी रखने के लिए यह अधिक समझ में आता है। यह नियम नहीं है, या पाठ्यक्रम, सिर्फ एक आम अभ्यास है। व्यू व्यू कंट्रोलर की एक प्रॉपर्टी है, और आपके द्वारा बनाए गए उप-वर्गों में अक्सर अतिरिक्त सबव्यूव होते हैं जिन्हें वे नियंत्रित करते हैं। वह नियंत्रण आमतौर पर काफी पूर्ण होता है, जिसमें वे दूसरों के साथ उस नियंत्रण को साझा नहीं करते हैं। मुझे एक अच्छे संदर्भ के लिए थोड़ा सा Google दें, और मैं इसे यहां पोस्ट करूंगा। – danh

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