तुम सिर्फ विधि कॉल करने के प्रयास कर रहे हैं , आप मानक सिंटैक्स का उपयोग कर सकते हैं:
[self meth2:next_int];
तुम सच मेंउपयोग करने के लिए की जरूरत है 0 आप कॉल के लिए NSNumber
में संख्या को लपेट सकते हैं। आप कहते हैं कि आप ऐसा नहीं कर सकते क्योंकि आप नंबर बदलने की जरूरत है, लेकिन आप केवल एक पूर्णांक बाहर निकालते हैं और है कि बदल सकते हैं:
[self performSelectorOnMainThread:@selector(meth2:) withObject:[NSNumber numberWithInt:next_int] waitUntilDone:NO];
// ... later ...
- (void)meth2:(NSNumber *)number {
int myInt = [number intValue];
// do stuff with myInt
}
लेकिन हो सकता है आप का मतलब है कि आप के रूप में संख्या के मूल्य प्राप्त करना चाहते हैं आपके कॉल से आउटपुट meth2
पर। यदि यह तुम क्या मतलब है, तो आप एक डबल सूचक पास कर सकता है ताकि आप वापस एक नई वस्तु प्राप्त कर सकते हैं:
- (void)meth2:(NSNumber **)number {
int myInt = [*number intValue];
// do stuff with myInt
*number = [NSNumber numberWithInt:myInt];
}
// The caller can now operate like this:
NSNumber *number = [NSNumber numberWithInt:next_int];
[self performSelectorOnMainThread:@selector(meth2:) withObject:&number waitUntilDone:YES];
int returnInt = [*number intValue];
बेशक
, जो वास्तव में धागे की सुरक्षित नहीं है, इसलिए यदि आप एक से अधिक थ्रेड के साथ सामान कर रहे हैं , मैं बहु-थ्रेड-एक्सेस किए गए चरों तक पहुंचने के लिए @synchronized
कीवर्ड का उपयोग करने की सलाह दूंगा, या परमाणु गुणों को स्थापित कर सकता हूं (यानी गुण nonatomic
के रूप में घोषित नहीं किए गए हैं)।
इसके अलावा, मेथ आपके लिए बुरा है !! haha
हाय टायलर लेने के लिए विधि हस्ताक्षर को संशोधित करने की आवश्यकता है, मुझे @ सिंक्रनाइज़ किए गए कीवर्ड के बारे में निश्चित नहीं है, मैं इसके बारे में पढ़ूंगा, लेकिन इसके बाद से पूर्णांक चर का उपयोग थ्रेड से 'आउटपुट' के रूप में किया जाता है, जिसमें समवर्तीता और सामान के बारे में चिंता करने की आवश्यकता नहीं होती है। ..withObject: [NSNumber numberWithInt: next_int] .. बहुत अच्छा काम करता है, (NSNumber **) मुझे एक असंगत सूचक प्रकार चेतावनी देता है। मैं ध्यान रखूंगा कि मेथ के बारे में ... धन्यवाद! – sergiobuj