2012-07-12 14 views
5

मेरे पास एक पहेली जैसे प्रोग्राम है जहां आप पहेली को आज़माने और पूरा करने के लिए सही क्रम में एक साथ ब्लॉक डालते हैं। और जब आप पूरा कर लेंगे तो आप प्ले बटन दबा सकते हैं और फिर प्रोग्राम आपके ब्लॉक पर उन स्थानों पर आपके ब्लॉक पर एक छोटा सा आदमी चलाएगा जहां आपके ब्लॉक हैं। तो यदि आपने एक ब्लॉक को ऊपर रखा है, तो एक ब्लॉक दाएं, एक ब्लॉक नीचे, और उसके बाद प्रोग्राम को हिट करें, फिर कॉल करें, विधियों को आगे बढ़ें, दाएं स्थानांतरित करें, नीचे जाएं।क्या आप एक चयनकर्ता में एकाधिक विधियों को स्टोर कर सकते हैं?

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

मेरे सामान्य कार्यक्रम अभी अच्छी तरह से इस

if(random requirements) 
[self moveUp] 

else if(random requirements) 
[self moveDown] 

else if (random requirements) 
[self moveRight] 

else if(random requirements) 
[self moveLeft] 

तरह दिखता है, मैं नहीं बल्कि यह इस

if(random requirements) 
SEL selector addMethod:[self moveUp] 

else if(random requirements) 
SEL selector addMethod:[self moveDown] 

else if (random requirements) 
SEL selector addMethod:[self moveRight] 

else if(random requirements) 
SEL selector addMethod:[self moveLeft] 

स्पष्ट रूप से कुछ ऐसा दिखाई देगा यह असली वाक्य रचना नहीं है, लेकिन आप एक तरह से समझ सकते हैं मैं जिस चीज़ की तलाश कर रहा हूँ?

उत्तर

8

आप एक चयनकर्ता में एकाधिक चयनकर्ताओं को स्टोर नहीं कर सकते हैं, लेकिन चयनकर्ताओं की एक सरणी बनाना एक पूरी तरह से मान्य बात है। सबसे आसान तरीका आपके चयनकर्ताओं के स्ट्रिंग प्रस्तुतियों को NSMutableArray में संग्रहीत करना होगा, और सरणी पर पुनरावृत्त कोड में स्ट्रिंग से चयनकर्ता बनाना होगा।

NSMutableArray *selectorNames = [NSMutableArray array]; 
if(random requirements) 
    [selectorNames addObject:NSStringFromSelector(@selector(moveUp))]; 
if(random requirements) 
    [selectorNames addObject:NSStringFromSelector(@selector(moveDown))]; 
... 
for (NSString *selectorName in selectorNames) { 
    SEL nextSelector = NSSelectorFromString (selectorName); 
    // Now you can invoke your selector 
} 

चयनकर्ताओं के अलावा अन्य विकल्प using blocks होंगे। ब्लॉक भी encapsulating कार्यों में बहुत अच्छे हैं, और आप अपने लक्ष्य को अलग से स्टोर करने की जरूरत नहीं है।

+0

डैंग, मुझे इसे हराया! –

+1

@ownageGuy चिंता न करें, प्रश्नों का उत्तर देना शुरू करने के बाद आप प्रतिष्ठा बिंदुओं को बहुत जल्दी जमा करेंगे। सौभाग्य! – dasblinkenlight

+2

प्रारंभ में सरणी में तार जोड़ते समय 'NSStringFromSelector()' का उपयोग करना बेहतर हो सकता है। –

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

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