2010-01-04 7 views
13

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

(वाक्य-मदद भी सराहना किया जाएगा।)

धन्यवाद,

निक

उत्तर

32

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

-(NSPoint)scalePoint:(NSPoint)pt by:(float)scale 
{ 
    return NSMakePoint(pt.x*scale, pt.y*scale); 
} 

यह केवल छोटे/सरल structs के लिए वास्तव में उपयुक्त है।

आप वापस जाने के लिए एक से अधिक नए वस्तु, अपने कार्य संकेत वस्तु सूचक है, इस प्रकार लेना चाहिए चाहते हैं:

-(void)mungeFirst:(NSString**)stringOne andSecond:(NSString**)stringTwo 
{ 
    *stringOne = [NSString stringWithString:@"foo"]; 
    *stringTwo = [NSString stringWithString:@"baz"]; 
} 
+4

और अब स्विफ्ट की शुरुआत के साथ, आप टुपल्स का उपयोग करके कार्यों से कई तर्क वापस कर सकते हैं। विवरण के लिए [स्विफ्ट प्रोग्रामिंग भाषा] देखें (https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/index.html)। – gavinb

+0

उद्देश्य सी में, प्राइमेटिव के पॉइंटर्स को सौंपने के लिए वाक्यविन्यास क्या है? जैसे कि बूल या इनट्स। मैंने सोचा कि मैं सिर्फ एक सितारा को हटा सकता हूं लेकिन ऐसा लगता है कि मैं पूरी कहानी नहीं देख रहा था। –

+0

@ रीयनपूलोस आदिम प्रकारों के लिए, यह सी के समान है। संदर्भ के द्वारा चर को पास करें (उदाहरण के लिए। 'कैल्क (int a, int b, int * c) ') और शरीर में मान को * * c = a + बी; '(उदाहरण के लिए)। – gavinb

2

आप इस के लिए एक NSArray नहीं सकते हैं?

return [NSArray arrayWithObjects:coorX, coorY, nil]; 
+2

शब्दकोश बेहतर काम करते हैं, क्योंकि आपको आदेश के बारे में चिंता करने की ज़रूरत नहीं है जैसा कि आप एक सरणी करते हैं। –

+0

हाँ, आमतौर पर। मुझे लगता है कि ओपी ने उदाहरण के लिए बहुत अधिक ध्यान केंद्रित किया था, क्योंकि निर्देशांक हमेशा (* x *, * y *) होते हैं। –

+0

अंतर्दृष्टि के लिए सभी को धन्यवाद, यह समझ में आता है। मुझे इस एल्गोरिदम को समझने का प्रयास करने का समय लगता है कि मैं काम कर रहा हूं। धन्यवाद, निक – nickthedude

3

आप या तो एक मूल्य सीधे लौट सकते हैं और संदर्भ द्वारा एक और लौटने के लिए, के रूप में gs's answer में दिखाया गया है, या एक संरचना प्रकार बनाएँ और इसे वापस करें। उदाहरण के लिए, कोको में 2 डी विमान, NSPoint पर बिंदुओं की पहचान करने के लिए पहले से ही एक प्रकार शामिल है।

1

मैं आपको एनएस डिक्शनरी को वापस करने की सलाह देता हूं, शब्दकोश के अंदर आप किसी ऑब्जेक्ट प्रकार और किसी भी प्रकार के चर को स्टोर और भेज सकते हैं।

-(NSDictionary*)calculateWith:(id)arg 
{ 
NSDictionary *urDictionary [email protected]{@"key1":value1,@"Key2":value2,.....}; 
return urDictionary; 
} 
संबंधित मुद्दे