optimizing Objective C programs के बारे में मेरा एक अन्य प्रश्न निम्नलिखित को प्रेरित करता है: क्या किसी के पास एसईएल और आईएमपी का उपयोग करके एक छोटा सा उदाहरण है जब मोड में इनपुट के लिए दो (या अधिक) पूर्णांक होते हैं?उद्देश्य-सी और एसईएल/आईएमपी
उत्तर
वर्तमान आईएमपी (आईएमपी के अवलोकन के साथ) प्राप्त करने के लिए यहां good tutorial है। आईएमपी और sels का एक बहुत ही बुनियादी उदाहरण है:
- (void)methodWithInt:(int)firstInt andInt:(int)secondInt { NSLog(@"%d", firstInt + secondInt); }
SEL theSelector = @selector(methodWithInt:andInt:);
IMP theImplementation = [self methodForSelector:theSelector];
//note that if the method doesn't return void, you have to explicitly typecast the IMP, e.g. int(* foo)(id, SEL, int, int) = ...
फिर आप तो जैसे छोटा सा भूत आह्वान सकता:
theImplementation(self, theSelector, 3, 5);
आम तौर पर जब तक आप गंभीर वूडू कर रहे हैं आईएमपी जरूरत के लिए कोई कारण नहीं है - है क्या आप कुछ विशिष्ट करना चाहते हैं?
@eman: आपको उस वापसी को कास्ट करने की आवश्यकता है: शून्य (* कार्यान्वयन) (आईडी, एसईएल, int, int) = (शून्य (*) (आईडी, एसईएल, int, int)) [स्वयं विधिफॉर चयनकर्ता: चयनकर्ता]; –
@ जेसन कोको- अगर मैं गलत हूं, तो मुझे सही करें, लेकिन मुझे लगता है कि आईएमपी टाइप किया गया है (आईडी, एसईएल, ...), इसलिए इससे कोई फर्क नहीं पड़ता (हालांकि यह टाइपएफ़ नहीं है, लेकिन अगर आपको टाइपफैटी की ज़रूरत है, आपको शायद आईएमपी का उपयोग नहीं करना चाहिए)। – shosti
आप सही हैं, क्योंकि यह विधि शून्य है, यह ठीक है, लेकिन आपको कई अन्य मामलों में त्रुटियां मिलेंगी। आपको/जरूरत/कास्ट करना संभवतः बहुत मजबूत था, आपको हमेशा/सही होना चाहिए/शायद यह सही है;) - लेकिन यह सवाल स्वयं ही दिया गया है, मेरा अनुमान है कि ओपी शायद/आईएमपी का उपयोग नहीं कर रहा/चाहिए। –
अब मैं एमन को यह काम करने के लिए धन्यवाद है, मैं अभी तक एक और उदाहरण जोड़ सकते हैं:
SEL [email protected](getRankOf:::::::);
IMP rankingMethod=[eval methodForSelector:cardSelector];
rankingMethod(eval, cardSelector, 0, 1, 2, 3, 4, 5, 6);
मैं उपयोगी कुछ भी करने के लिए इस की जरूरत नहीं है, मुझे बस अपनी जिज्ञासा को पूरा करने की ज़रूरत है! फिर से धन्यवाद।
उद्देश्य-सी को अनुकूलित करने पर एक और अच्छा लिंक है http://www.mulle-kybernetik.com/artikel/Optimization/opti-3-imp-deluxe.html – SK9
यहां एक और संभावित विकल्प है। यह दुर्घटना से बचाता है लेकिन स्टबिंग काम नहीं करता है।
- (void)setUp
{
[super setUp];
[self [email protected](firstName) toClass:[User class]];
[self [email protected](lastName) toClass:[User class]];
}
- (void)addSelector:(SEL)selector toClass:(Class)class
{
NSString *uniqueName = [NSString stringWithFormat:@"%@-%@", NSStringFromClass(class), NSStringFromSelector(selector)];
SEL sel = sel_registerName([uniqueName UTF8String]);
IMP theImplementation = [class methodForSelector:sel];
class_addMethod(class, selector, theImplementation, "[email protected]:@");
}
- 1. "#", "$", "%", "&", और "_" "\ #", "\ $", "\%", "\ &", और "\ _"
- 2. प्रदर्शन और सॉर्टिंग, और mysql और php
- 3. "और" और "या"
- 4. "बिटवाइस और" और सी ++
- 5. getters और setters और
- 6. और बनाम * और | बनाम +
- 7. सीएसएस "और" और "या"
- 8. {} और {}
- 9. और
- 10. $ (...) और `...`
- 11. $ * और $ @
- 12. और
- 13. जावास्क्रिप्ट शॉर्टैंड अगर-और और
- 14. क्षमताओं और लिनक्स और जावा
- 15. MySQL और PHP और jquery
- 16. जावा और सी # और .NET
- 17. UILabel और numberOfLines और sizeToFit:
- 18. लिखें और और फिर विधियां
- 19. XHTML और और (एम्पसेंड) एन्कोडिंग
- 20. बेंचमार्क और सी # और जावा
- 21. रेल और मार्कडाउन और संपादक
- 22. अंतर और इरादा और सेटकंटेंटव्यू
- 23. Mercurial और maven (और svn)
- 24. सी ++ नया और हटाएं और स्ट्रिंग और फ़ंक्शंस
- 25. डब्ल्यूपीएफ और सिल्वरलाइट नियंत्रण और लेआउट पैन और ज़ूम क्षमताओं
- 26. कॉफ़ीस्क्रिप्ट क्लास और स्कोप और वसा और पतले तीर
- 27. (OrElse और Or) और (और इसके अलावा और) - कब उपयोग करें?
- 28. एमवीपी और उपयोगकर्ता नियंत्रण और आमंत्रण
- 29. घूर्णन और स्थिति: पूर्ण (IE8 और निचला)
- 30. टिंकर और wxwidgets के पेशेवरों और विपक्ष?
क्या आप अधिक जानकारी दे सकते हैं? मुझे यकीन नहीं है कि एसईएल और आईएमपी द्वारा आपका क्या मतलब है। – drekka
हाँ, क्या, बिल्कुल, क्या आप करना चाहते हैं? –