2009-06-14 8 views
7

कोको लिखते समय और एक क्लास विधि को कार्यान्वित करते समय जो एक प्रतिनिधि और एक या अधिक चयनकर्ताओं को अपने कॉलबैक के लिए उपयोग करने के लिए स्वीकार करता है, क्या शब्दावली "प्रतिनिधि" और "चयनकर्ता" से "लक्ष्य" और "कार्रवाई" में बदल जाती है? अधिक बिंदु पर, "प्रतिनिधि" केवल तब तक सीमित है जब मेरी कक्षा कहलाती है, लेकिन जब मेरी कक्षा कॉलिंग पर कॉल कर रही है?क्या प्रतिनिधि/चयनकर्ता और लक्ष्य/कार्रवाई के बीच कोई अंतर है?

उत्तर

12

प्रतिनिधि आमतौर पर चयनकर्ताओं के बजाय Protocols का उपयोग करके लागू किए जाते हैं। यह कक्षाओं में संचार करने का एक और औपचारिक तरीका है, और अधिकतर उपयोगी है जब एक से अधिक विधि की आवश्यकता हो सकती है।

लक्ष्य/कार्रवाई आम तौर पर एक "घटना की तरह" स्थिति के अनुरूप करने के लिए उपयोग किया जाता है, इस तरह के एक क्लिक करें, एक टाइमर फायरिंग, आदि के रूप

+0

मैं अब इसे पाने के - मैं इसे गलत कर रहा हूँ। यही कारण है कि यह मुझे भ्रमित कर रहा है :) सहायता के साथ यह पृष्ठ भी था, "प्रोटोकॉल में विधिनाम नहीं" त्रुटि को कवर करने में त्रुटि मैं लगभग तुरंत चला गया: http://www.mobileorchard.com/idprotocol-retainrelease-and -protocol-भाग / –

3

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

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

1

मुझे लगता है कि डिजाइन स्तर पर एक अंतर है।

चलिए एक घटक लेते हैं जो कुछ सामान करने के लिए विशिष्ट है। Delegation और targetAction दोनों हमारे घटक और उस वस्तु के बीच संचार (कुछ प्रकार) संचार की सुविधा प्रदान करेंगे जो इसका उपभोग करता है।

आमतौर पर, संचार का किस प्रकार वांछित है यह निर्धारित करता है कि Target Action या Delegation का उपयोग करना है या नहीं।

1. संचार क्या हो रहा है?

लक्ष्य कार्रवाई जब संचार नियंत्रण (घटनाओं, राज्य, आदि)

प्रतिनिधिमंडल और अधिक लचीला है और व्यापक अनुप्रयोगों के लिए सीमित है और अधिक उपयुक्त है। तो मैं 2 ऑब्जेक्ट्स के बीच डेटा भेजने और प्राप्त करने के लिए प्रतिनिधिमंडल का उपयोग कर सकता हूं।

2. कैसे

अब तक मैं लक्ष्य कार्रवाई देखा है करने के लिए ज्यादातर प्रकट 1-वे संचार

प्रतिनिधिमंडल के साथ मैं अपने आप को तरीकों होने से 2-वे संचार किया है कि मूल्य वापसी।

0
Target - the object which is going to respond for your action. 
Action - the method which is triggered by your action 
Delegates - Majorly used for callback mechanism, implemented using "@protocols". 
Selector - also can be used as callback method:

उदाहरण के लिए:

SEL mySelector = @selector(myTimerCallback:); 
    [NSTimer scheduledTimerWithTimeInterval:30.0 target:obj selector:mySelector userInfo:nil repeats:YES]; 
संबंधित मुद्दे