2012-07-25 18 views
7

करना चाहिए, मैं आईओएस नियंत्रण प्रतिनिधियों के लिए सम्मेलन नामकरण में देख रहा हूं। मैं should, will, did pattern for delegate methods से परिचित हूं। मैं इस नामकरण सम्मेलन को ऐप्पल एपीआई द्वारा बड़े पैमाने पर इस्तेमाल कर सकता हूं। मेरा सवाल यह है कि, क्या सेब द्वारा आपूर्ति किए गए कोई प्रतिनिधि हैं जिन्हें एक ही कार्रवाई के लिए तरीकों से करना चाहिए, करना चाहिए? जैसे पंक्ति चयन के लिए:आईओएस प्रतिनिधि नामकरण सम्मेलन -

shouldSelectRow 
willSelectRow 
didSelectRow 

मुझे एक प्रतिनिधि नहीं मिला है जो तीनों को परिभाषित करता है। मेरी भावना यह है कि 'इच्छा' विधियों को अक्सर जगह के स्थान पर उपयोग किया जाता है, यानी वे कार्रवाई को रद्द करने के लिए एक मूल्य वापस कर सकते हैं।

क्या कोई काउंटर उदाहरण हैं?

+2

मुझे लगता है कि आपको यह फ़्लिप हो गया है - "चाहिए" को एक बूलियन लौटा देना चाहिए जो प्रेषक को आगे बढ़ने के लिए कहता है या नहीं। क्या यह आपको बताएगा कि यह होगा और ऐसा लगता है कि आप इसके बारे में सोच सकते हैं। इससे पहले कि आप इसके बाद कार्रवाई कर सकें। मेरा $ 0.02 –

+0

मैं इच्छा के उपयोग को जोड़ता हूं और चाहिए, इसलिए इसे बुलाया जाएगा, लेकिन अगर आप नहीं चाहते हैं कि परिवर्तन आगे बढ़ने के विकल्प के साथ। विधि विधि मुझे कोई समझ नहीं आता है। यह सिर्फ अतिरिक्त ओवरहेड है। –

+0

@ डेविड एचडी जो मेरी प्रारंभिक समझ थी, हालांकि, 'UITableViewDelegate' विधि' tableView: willSelectRowAtIndexPath' एक मान वापस कर सकता है जो चयन रद्द कर देता है। दूसरे शब्दों में, यह 'चाहिए' जिम्मेदारी करता है। – ColinE

उत्तर

1

विधियों को हमेशा एक बूल मान वापस करना चाहिए, और आपको किसी ऑब्जेक्ट का वर्तमान व्यवहार बताएं (लेकिन उन्हें स्वचालित रूप से कभी नहीं कहा जाता है)। तरीकों प्रतिनिधि तरीकों जब एक घटना के बारे में तो होना ही है कि कहा जाता हो, जैसे

-(void)applicationWillResignActive... 

कर रहे हैं और करेंगे "किया" तरीकों में भी तरीकों कि के बाद घटना, जगह ले ली appplicationDidFinishLaunching की तरह कहा जाता हो ... प्रतिनिधि कर रहे हैं

+0

तो क्या आपका मतलब मैन्युअल रूप से कहा जाना चाहिए? – OMGPOP

+0

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

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