ios - dismissViewControllerAnimated:completion: method replacement doesn't work on Xcode4.6.1 -
मैं "वर्चुअल डिवेंडर नियंत्रकअनिर्मित: पूर्णता:" को iOS4.3 में इस पद्धति का उपयोग करने के लिए ओवरराइड कर रहा हूं। लेकिन इस तकनीक को एक रनटाइम त्रुटि मिली है क्योंकि मैं एक्सोड (4.6.1) अपडेट करता हूं
त्रुटि: एड्रेस में कोई ऐसा ऑब्जेक्ट नहीं होता है जो ऑब्जेक्ट फ़ाइल में एक सेक्शन को इंगित करता है और रहस्यमय तरीके से, "presentViewController: एनिमेटेड: पूरा होने के:" विधि कोई probrem साथ काम कर रहा है ...
यहां है "UIViewController + Compatibility.h" मैं प्रयोग किया जाता है ।
@implementation UIViewController (संगतता) - (शून्य) iOS4_presentViewController: (UIViewController *) viewControllerToPresent एनिमेटेड: (bool) झंडा पूरा होने: (शून्य (^) (शून्य)) पूरा होने {[आत्म presentModalViewController: viewControllerToPresent एनिमेटेड: झंडा ]; [आत्म निष्पादनकर्ता: @ सिलेक्टर (कॉलब्लॉक :) साथ ऑब्जेक्ट: डिलीवरी के बाद पूरा: (झंडा? 0.5: 0)]; } - (शून्य) iOS4_dismissViewControllerAnimated: (bool) झंडा पूरा होने: (शून्य (^) (शून्य)) पूरा होने {[आत्म dismissModalViewControllerAnimated: झंडा]; [आत्म निष्पादनकर्ता: @ सिलेक्टर (कॉलब्लॉक :) साथ ऑब्जेक्ट: डिलीवरी के बाद पूरा: (झंडा? 0.5: 0)]; } - (शून्य) कॉलब्लॉक: (शून्य (^) (शून्य)) ब्लॉक {यदि (ब्लॉक) {block (); }} + (शून्य) iOS4compatibilize {// presentViewController: एनिमेटेड: पूरा होने: विधि एम 1 = class_getInstanceMethod (self.class, @selector (iOS4_presentViewController: एनिमेटेड: पूरा होने :)); Class_addMethod (self.class, @selector (वर्तमान ViewController: एनिमेटेड: पूर्णता :), method_getImplementation (m1), method_getTypeEncoding (m1)); // मेमो: // यह एक बग कारण है // विधि m2 = class_getClassMethod (self.class, @selector (iOS4_dismissViewControllerAnimated: पूरा :)); // यहाँ जवाब है // डिसकाउव्यूकंट्रोलरअनिमित: पूर्णता: विधि m2 = class_getInstanceMethod (स्वयं। वर्ग, @ सिलेक्टर (आईओएस 4_डिस्मिस वीयूआई कंट्रोलरअनिमित: पूर्णता :)); Class_addMethod (स्वयं। क्लॉज, @ सिलेक्टर (डिसकाइव्ह वीकंट्रोलरअनिमित: पूर्णता :), विधि_गेटपूर्णता (एम 2), method_getTypeEncoding (एम 2)); } @end क्या किसी को भी यही संदेह है?
मेमो: मैंने इन चीज़ों की कोशिश की है। - मेरे पूर्व-अनुपालन वाले बायनेरिज़ को साफ करें।
- Xcode को पुन: लॉन्च करें या मेरा मैक रिबूट करें।
- मेरा एक्सकोड वर्तमान नवीनतम संस्करण (संस्करण 4.6.1)
- मैंने बहुत ही कम नमूना कोड लिखा है (यह केवल मॉडल देखें और बंद), लेकिन मुझे एक ही त्रुटि मिली।
मुझे इस स्थिति को हल करने का कोई अंदाजा नहीं है ... कृपया मदद
यहाँ समाधान है (मैं गलत फ़ंक्शन का उपयोग किया गया था)
+ (शून्य) iOS4compatibilize {// presentViewController: एनिमेटेड: पूरा होने: विधि एम 1 = class_getInstanceMethod (self.class, @selector (iOS4_presentViewController: एनिमेटेड: पूरा होने :) ); Class_addMethod (self.class, @selector (वर्तमान ViewController: एनिमेटेड: पूर्णता :), method_getImplementation (m1), method_getTypeEncoding (m1)); // डिसकाउव्यूकंट्रोलरअनिमित: पूर्णता: विधि m2 = class_getInstanceMethod (स्वयं। वर्ग, @ सिलेक्टर (आईओएस 4_डिस्मिस वीयूआई कंट्रोलरअनिमित: पूर्णता :)); class_addMethod (self.class, @selector (dismissViewControllerAnimated: पूरा होने :), method_getImplementation (एम 2), method_getTypeEncoding (एम 2)); }
Comments
Post a Comment