2012-06-01 24 views
9

मैं प्रत्येक व्यू कंट्रोलर क्लास में कहीं भी कहां से कॉल किया जा सकता हूं, जिसे मैं परिभाषित कर सकता हूं?आईओएस: सार्वजनिक तरीकों को कैसे परिभाषित किया जाए?

मैं एक विधि मुझे एक json फ़ाइल लाता है कि है, और मैं, यह पुन: प्रयोज्य होना चाहता हूँ के बाद से मैं अपने एप्लिकेशन पर कई json कॉल नहीं है।

क्या आप मेरी मदद कर सकते हैं?

+0

सिंगलटन http://en.wikipedia.org/wiki/Singleton_pattern –

+0

rooster117 सही है। आप एक स्थिर विधि का जिक्र कर रहे हैं। कृपया ध्यान रखें कि उद्देश्य-सी में सभी विधियां सार्वजनिक हैं। हालांकि आप किसी विधि को "छुपाएं" या कक्षा विस्तार में विधियों की घोषणा करके संकलक चेतावनी का कारण बन सकते हैं। फिर भी, वे वास्तव में निजी नहीं हैं। –

उत्तर

6

आप एक वर्ग के माध्यम से जोड़ सकते हैं:

संपादित

एक नया ज मीटर फ़ाइल जोड़ी बना सकते हैं और ज फ़ाइल में। एम फ़ाइल:

@implementation UIViewController(JSON) 

-(void) bringJSON { 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

[NSData dataWithContentsOfURL:yourURL]; 

[self performSelectorOnMainThread:@selector(fetchData:) 
withObject:data waitUntilDone:YES]; 

}); 

} 


-(void) fetchData:(NSData*) data { 

//parse - update etc. 

} 


@end 

जहां मैं बस यह मान रहा हूं कि y आप एक एनएसएआरएआरई वापस कर रहे होंगे, आप वहां कोई भी विधि डाल सकते हैं और सभी UIViewControllers का विस्तार कर सकते हैं। विधि jJON सभी UIViewControllers और इसके उप-वर्गों के लिए उपलब्ध होगा।

+0

woooo यह वास्तव में अजीब आदमी लगता है। मुझे एक कोशिश करनी ही होगी! – 88fsantos

+0

जब मैं लोड हो जाता हूं, तो मैं अपने जेसन को कैसे वापस कर सकता हूं? : एस अगर मैं इसे "dispatch_get_main_queue" के अंदर डालता हूं तो यह एक त्रुटि हो जाती है। – 88fsantos

+1

संपादित करें कृपया देखें –

4

मुझे विश्वास है कि आप एक स्थिर विधि के बारे में सोच रहे हैं जिसे "+" प्रतीक के साथ परिभाषित किया जाएगा।

+ (String) yourFunctionName:(NSInteger)someValue ..... 

तो फिर तुम प्रथम श्रेणी नाम के साथ कहीं भी यह कह सकते हैं:

[YourClassName yourFunctionName:5]; 

आपको लगता है कि एक वस्तु तो instantiated किए जाने की जरूरत है कि का उपयोग एक समारोह की जरूरत है, तो आप एक सिंगलटन करना चाहेंगे पैटर्न।

2

मैं पहली बार जवाब plused के रूप में यह तरीकों कि कि उस वस्तु में शामिल किसी भी फाइल से कहा जा सकता है के साथ बनाने (अनिवार्य) किसी अन्य वस्तु का एक तरीका है।

भी याद रखें कि ऑब्जेक्टिव-सी भी बस सिर्फ सी तुम ग फ़ाइलें शामिल कि बस रहे हैं एएनएसआई-सी दिनचर्या है कि यह भी कहा जा सकता है शामिल हो सकता है कर रहा है। में फिर

@interface UIViewController(JSON) 
-(void) bringJSON; 
-(void) fetchData:(NSData*) data; 


@ end 

:

+0

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

+0

आप हमेशा सी ++ ऑब्जेक्ट्स को भी लागू कर सकते हैं। इस तरह आप केवल फ़ंक्शन एक्सेस के साथ संरक्षित/निजी चर प्रदान कर सकते हैं। एक्सकोड में आपके उद्देश्य-सी कोड में सी ++ ऑब्जेक्ट्स को संकलित करने की क्षमता है। मैं कुछ लिंक खोजने की कोशिश करूंगा, लेकिन यहां स्टैक ओवरव्लो पर विषय (नमूना कोड के बिना) के बारे में एक पोस्ट है। http: // stackoverflow।कॉम/प्रश्न/406753/कैसे-अच्छी तरह से उद्देश्य-सी-समर्थित – trumpetlicks

+0

tks आदमी! मैं पढ़ूंगा कि – 88fsantos

3

विधि के वापसी प्रकार से पहले एक + चिह्न का उपयोग करें।

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

+ (void) Name: (NSString *) str{ 

}