2011-10-28 16 views
6

इस पर लोगों की राय पूछना चाहता था। मेरे पास uiimageview उपclass है और इसके प्रारंभकर्ता में मैं छवि दृश्य में कुछ इशारा पहचानकर्ता जोड़ता हूं, और मैं कक्षा के भीतर इशारा पहचानकर्ता प्रतिनिधि विधियों को भी शामिल करता हूं। मेरा सवाल है, क्या यह मॉडल मॉडल नियंत्रक का उल्लंघन करता है? क्या एक कोड को नियंत्रित करने के साथ सभी कोड को एक दृश्य नियंत्रक में होना चाहिए? एक दृश्य में एक बटन एक्शन विधि डालने के साथ ही कहें। किसी भी तरह, राय सुनने में रुचि रखते हैं।मॉडल दृश्य नियंत्रक का उल्लंघन करने के लिए इशारा पहचानकर्ता/क्रिया विधियों को जोड़ना?

+0

मुझे इस तरह के प्रश्न पसंद हैं। – Morkrom

उत्तर

5

एक अर्थ में, हाँ, यह एमवीसी पैटर्न का उल्लंघन करता है। जैसा कि आप कहते हैं, इस दृश्य को नियंत्रित करने के तरीके के साथ कुछ भी नहीं होना चाहिए, आवेदन के किसी अन्य भाग में ऐसे कोड को समूहित करने की बेहतर आदत है।

इसके अलावा, ओओपी के महान फायदों में से एक कक्षाओं का पुन: उपयोग करने की क्षमता है। इस तरह के दृश्यों को बिना किसी समस्या के पुन: उपयोग किया जा सकता है, क्योंकि सभी नियंत्रण कोड - एप्लिकेशन के लिए विशिष्ट - उनमें नहीं है। यदि आप अपने विचार में प्रतिनिधि विधियां शामिल करते हैं, तो आप इसका पुन: उपयोग नहीं कर पाएंगे, या आपको प्रत्येक बार प्रतिनिधि विधि बदलनी होगी!


लेकिन नियम सामान्य मामले के लिए हैं। मैक ओएस एक्स के लिए कोको फ्रेमवर्क पर नज़र डालें: आपको कोको बाइंडिंग मिल गई है जो आपको अपने मॉडल में डेटा परिवर्तन के जवाब में सीधे दृश्य सामग्री को बदलने की अनुमति देती है। यह किसी भी तरह से एमवीसी पैटर्न का भी उल्लंघन करता है।

एक अन्य उदाहरण, UIViewController देखें। यह एक नियंत्रक होना चाहिए लेकिन यह एक दृष्टिकोण से बहुत करीब से जुड़ा हुआ है कि सवाल बनी रहती है। दृश्य & नियंत्रक के बीच अलगाव उतना स्पष्ट नहीं है जितना एमवीसी इसे पसंद करेगा।


निष्कर्ष करने के लिए, मैं कहूँगा कि यह एक अच्छी आदत पैटर्न का पालन करने के लिए (जब तक वे अपनी आवश्यकताओं से मिलान) और जिस तरह से आप किसी दिए गए ढांचे का उपयोग कर इसे का पालन कर सकते हैं। लेकिन कुछ मामला है, यदि आप इसे स्पष्ट करते हैं, तो कुछ शॉर्टकट बनाने और नियमों को तोड़ना दिलचस्प हो सकता है।

2

एक पूरी तरह से अच्छा विचार की तरह लगता है, अगर कार्रवाई केवल दृश्य की उपस्थिति को प्रभावित करेगी। उदाहरण के लिए, इसे पैन इशारा पहचानकर्ता को चारों ओर खींचने के लिए एक दृश्य को जोड़ने के लिए एक अच्छा विचार लगता है।

हालांकि यदि यह आपके आवेदन में अधिक व्यापक प्रभाव को ट्रिगर करेगा तो शायद यह सही दृष्टिकोण नहीं है।

0

एप्पल डेवलपर कोर दक्षताओं डॉक (https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html) से:

एक दृश्य वस्तु एक आवेदन है कि उपयोगकर्ताओं को देख सकते हैं में एक वस्तु है। ऑब्जेक्ट देखें जानता है कि खुद को कैसे आकर्षित करें और उपयोगकर्ता क्रियाओं का जवाब दे सकते हैं।

व्यक्तिगत तौर पर मैं, इस व्याख्या के लिए एक दृश्य वर्ग के भीतर इशारा recognisers लिखने के लिए अपने ठीक मतलब करने के लिए प्रदान की जाती इशारा दृश्य "उपयोगकर्ता क्रियाओं का जवाब" की अनुमति के लिए है।

ऐप्पल एपीआई में कुछ उदाहरण भी हैं जो मुझे लगता है - चूंकि कुछ UIView वंशज (उदाहरण के लिए UIButton) संकेतों को पहचान सकते हैं।

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