2012-01-06 19 views
8

मैंने यह समझने की कोशिश की है कि मैं वादा करता हूं! इस पर जानकारी की एक संपत्ति है और मैं अभी भी अमूर्त अवधारणाओं के समुद्र में भटक रहा हूं! ऐसा लगता है कि जब मैं बच्चा था और कोई भी मुझे समझा सकता था कि क्यों कोई देश सिर्फ अधिक पैसा प्रिंट नहीं कर सकता और वास्तव में समृद्ध हो सकता है। मैं इस सामान में से अधिकांश के साथ मंद नहीं हूं, लेकिन किसी कारण से मैं इस अवधारणा के चारों ओर अपने सिर को लपेट नहीं सकता हूं, इसलिए अगर कोई संभवतः धीरे-धीरे "4 साल की उम्र से बात कर रहा" धीरे-धीरे जितना संभव हो सके, तो कोई वास्तव में सराहना करता है !डमीज के लिए प्रोटोकॉल और प्रतिनिधि

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

तो अनुक्रम है:

  1. लक्ष्य विधि नियंत्रक वस्तु में बनाया जाता है।
  2. एक दृश्य चुना गया है और उस विधि से ग्राफिक रूप से जुड़ा हुआ है।
  3. उस घटना पर एक घटना होती है जो नियंत्रक से विधि को निकाल देती है।

प्रोटोकॉल और प्रतिनिधियों ने मुझे झुका दिया है। मुझे पता है कि ऑब्जेक्ट्स को एक-दूसरे से बात करने की इजाजत देने के साथ कुछ करना है, लेकिन मैंने नीचे (मेरी समझ की कमी) को समझने की कोशिश की और इसे हटा दिया क्योंकि मुझे लगता है कि मेरी वर्तमान सोच में नॉट्स को अनपिक नहीं करना है, बल्कि सिर्फ स्लेट मिटाएं और फिर से शुरू करें। के रूप में लक्षित करने के लिए/कार्रवाई

  • कोड के घटक का विरोध किसी को भी कृपया के लिए थोड़ा समय तो सकता है

    1. के प्रयोजन समझा प्रतिनिधियों/प्रोटोकॉल का उपयोग करना, और जहां यह रहता है
    2. किसी घटना के समय घटित के अनुक्रम जब प्रक्रिया का उपयोग किया जा रहा है

    मैं हमेशा से आभारी रहूंगा।

    अन्य स्पष्टीकरणों पर कुछ टिप्पणियों के आधार पर, मुझे लगता है कि मैं अकेला नहीं हूं, इसलिए उम्मीद है कि यह सामान्य उपयोग होगा। बहुत बहुत धन्यवाद!

    संपादित करें:

    ठीक है के रूप में मैं शायद सोचा था कि अगर मैं सिर्फ मेरी समझ लोगों ने मुझे सही कर सकते हैं बाहर रखना है, और यह इस आसान बना सकता है।

    मेरा नमूना Apple Docs से लिया गया है, विंडो के साथ व्यू ऑब्जेक्ट और विंडोडिलेगेट प्रतिनिधि के रूप में, जहां बंद विंडो बटन पर एक क्लिक "मुझे बंद करना चाहिए?" प्रतिनिधि को संदेश।

    कोड के संघटक: विंडो (देखें) WindowDelegate (देखें नियंत्रक?)

    1. प्रोटोकॉल है जो एक प्रतिनिधि विंडो (देखें) के इंटरफेस खंड में उपयोग कर सकते हैं घोषित।
    2. विंडो में प्रतिनिधि का उदाहरण बनाएं।
    3. बताएं कि विंडो डिलीगेट विंडो प्रोटोकॉल लागू करता है, इसमें शामिल हैं: इसके इंटरफ़ेस में। (यहाँ थोड़ा डरावना है?)
    4. विंडोडिलेगेट (देखें नियंत्रक) कार्यान्वयन अनुभाग में विधियों के आवश्यक कार्यान्वयन को लिखें।
    5. किसी निश्चित घटना पर विंडो कुछ जानकारी के साथ विंडो डिलीगेट को एक संदेश भेजेगी।
    6. विंडोडिलेगेट इसे संसाधित करेगा और एक जवाब देगा।

    सही जगहों के साथ कहीं भी?

  • +2

    संबंधित: http://stackoverflow.com/questions/6148148/delegates-what-are-they-really/6148838#6148838 – justin

    उत्तर

    -1

    प्रतिनिधियों के लिए आपको this question पर एक नज़र डालें।

    प्रोटोकॉल के लिए आप this question देख सकते हैं या documentation पर देख सकते हैं।

    आशा है कि इससे मदद मिलती है!

    +0

    धन्यवाद, इससे मुझे कुछ चीजें मिलीं जो मैंने अभी तक नहीं देखी थीं, अभी भी हालांकि संघर्ष कर रहा है। 'सीखने के उद्देश्य-सी: ए प्राइमर' के लिए – Alan

    3

    यहां सामानों का एक पूरा समूह है और ऐसा लगता है जैसे आपको कुछ चीजें उलझन में मिली हैं।

    सबसे पहले मैं सुझाव देता हूं कि आप ऐप्पल डेवलपर साइट पर जाएं और सीखने के उद्देश्य-सी: ए प्राइमर और ऑब्जेक्टिव-सी प्रोग्रामिंग भाषा पुस्तकें डाउनलोड करें। इस पल के लिए लक्ष्य/एक्शन इंटरफ़ेस तारों की सामग्री को अनदेखा करें क्योंकि ऐसा लगता है कि आपको उद्देश्य सी के कुछ मूलभूत बातें समझने की आवश्यकता है। यह वह जगह है जहां आप प्रोटोकॉल, आदि और अन्य ऑब्जेक्ट उन्मुख सामग्री के बारे में सब कुछ पता लगाएंगे।

    दूसरी बात यह है कि वहां कई बहुत अच्छी किताबें हैं जो आपको एक आवेदन के विकास के माध्यम से कदम उठाएंगी। आईफोन 4 विकास शुरू करना: आईओएस एसडीके की खोज करना एक ऐसा माना जाता है जिसे अच्छी तरह से माना जाता है। यह वह जगह भी है जहां आप प्रतिनिधियों के बारे में जानेंगे।

    दस्तावेज में कुछ और समय वापस खर्च करें। एसडीके दस्तावेज में कई लेख हैं जो बताते हैं कि चीजें एक बहुत ही बुनियादी स्तर से कैसे काम करती हैं और ऐप्पल डेवलपर साइट पर भी बहुत कुछ है।

    +0

    +1। मुझे याद है जब पहली बार उद्देश्य-सी सीखना कि इस दस्तावेज़ ने वास्तव में मुझे बहुत मदद की! – v1Axvw

    +0

    धन्यवाद, मैं इस समय स्टैनफोर्ड व्याख्यान के माध्यम से अपना रास्ता काम कर रहा हूं, मैं उन्हें किताबों की तुलना में अधिक निर्देशक पाता हूं। इस समय 5 वें स्थान पर, उद्देश्य-सी की मूल बातें के बारे में काफी अच्छी समझ है, यह xCode में अधिक एप्लिकेशन है जिसके साथ मैं संघर्ष कर रहा हूं। मैं समझता हूं कि उपर्युक्त लक्ष्य-क्रिया संदर्भ असंबंधित प्रतीत हो सकता है, लेकिन मूल रूप से व्याख्याता ने नियंत्रक के लिए दो तरीकों और संचार के विचारों के रूप में लक्ष्य-क्रिया और प्रोटोकॉल/प्रतिनिधि को वर्णित किया, इसलिए मैंने इसे क्यों शामिल किया। – Alan

    +0

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

    0

    प्रतिनिधियों को समझने के लिए, कोको द्वारा प्रदान किए गए प्रतिनिधियों पर नज़र डालें। उदाहरण के लिए एनएसविंडो में एक प्रतिनिधि विधि है जिसे - (शून्य) विंडो विल्लक्लोस: (एनएसएनोटिफिकेशन *) ए नोटिफिकेशन यदि आप उस प्रतिनिधि विधि को लागू करते हैं, तो आप यह निर्धारित करने के लिए अधिसूचना देखें कि कौन सी विंडो बंद होने वाली है और उस विंडो के लिए कुछ क्लीनअप करें । आप NSWindow ऑब्जेक्ट के लिए एक प्रतिनिधि हैं इस अर्थ में कि आप विंडो ऑब्जेक्ट के लिए कुछ काम कर रहे हैं।

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

    2

    उप-वर्गीकरण से बचने में आपकी सहायता के लिए प्रतिनिधि मौजूद हैं।

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

    कारण उपclassing युग्मन का एक रूप है क्योंकि जब आप एक सुपरक्लास से उपclass, तो आपका उपclass superclass के तरीकों (जो सबक्लास विरासत में मिला) पर निर्भर करेगा। तो अगर आपको सुपरक्लास बदलना है, तो आपको संभवतः इसके साथ सभी उप-वर्गों को बदलना होगा।

    कहें कि आप एक विधि के साथ क्या करते हैं, इसके अलावा, वे ऑब्जेक्ट्स का एक गुच्छा रखना चाहते हैं। उप-वर्गीकरण करके, आपको विभिन्न उप-वर्गों का एक गुच्छा बनाना होगा और उन सभी पर एक विधि को ओवरराइट करना होगा, जो बहुत अधिक उपclassing (और अवांछित युग्मन) होगा। यह वह जगह है जहां प्रतिनिधि आते हैं। गुब्बारे के गुच्छा के बजाय, आप केवल एक वर्ग बना सकते हैं, और इसे अनाम प्रकार आईडी के ऑब्जेक्ट के स्वामित्व में डिज़ाइन कर सकते हैं, जो प्रतिनिधि वस्तु होगी (हम इसे बच्चे कहेंगे)। इस बच्चे के ऑब्जेक्ट में एक अनूठी विधि होगी जो पहले माता-पिता में थी, लेकिन अब माता-पिता बच्चे ऑब्जेक्ट पर विधि को ट्रिगर करेंगे।

    तो गुच्छा के गुच्छा के बजाय, हम एक ही कक्षा के उदाहरणों का एक समूह बनाते हैं, और प्रत्येक एक अलग प्रतिनिधि वस्तु देते हैं, जिसे हम कर सकते हैं क्योंकि टाइप आईडी निर्दिष्ट नहीं करता है कि हमारे पास किस प्रकार की वस्तु है उपयोग करने के लिए। प्रत्येक अलग प्रतिनिधि वस्तु उस विधि को अलग-अलग लागू करती है, और हम सबक्लासिंग से बचते हैं।

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