ध्यान दें, Xcode 5.
पर अपरीक्षित मैं @ जॉन-रीड के जवाब थे, लेकिन पाया गया कि Xcode XcodeProjects की xcuserstated हिस्सा करने के लिए पर्यावरण के चर कहते हैं, और इन उपयोगकर्ता विशिष्ट और आम तौर पर करने के लिए प्रतिबद्ध नहीं हैं भंडार इस प्रकार मैं अपने AppDelegate धूर्तता अपनी लोड हो रहा है ओवरराइड करने के लिए:,
@implementation MyAppDelegate (Testing)
+ (void)initialize {
SEL new = @selector(application:didFinishLaunchingWithOptions:);
SEL orig = @selector(swizzled_application:didFinishLaunchingWithOptions:);
Class c = [self class];
Method origMethod = class_getInstanceMethod(c, orig);
Method newMethod = class_getInstanceMethod(c, new);
if (class_addMethod(c, orig, method_getImplementation(newMethod), method_getTypeEncoding(newMethod))) {
class_replaceMethod(c, new, method_getImplementation(origMethod), method_getTypeEncoding(origMethod));
} else {
method_exchangeImplementations(origMethod, newMethod);
}
}
- (BOOL)swizzled_application:(id)app didFinishLaunchingWithOptions:(id)opts {
return YES;
}
@end
ध्यान दें कि निम्नलिखित सरल है और अभी भी काम करता है, हालांकि मुझे यकीन है कि नहीं कर रहा हूँ यह विश्वसनीय है:
@implementation MyAppDelegate (Testing)
- (BOOL)application:(id)app didFinishLaunchingWithOptions:(id)opts {
return YES;
}
@end
यह की श्रेणियों क्योंकि काम करता है गतिशील रूप से लोड किए गए घटकों (जैसे परीक्षण बंडल) में विधियां प्राथमिकता लेती हैं। हालांकि तेजस्वी लग रहा है।
इस संकेत के लिए धन्यवाद! इसका इस्तेमाल किया और पूरी तरह से काम किया। – yonel
मुझे लगता है कि यह केवल उनके जीयूआई को एप्लिकेशन में लोड करने वाले अनुप्रयोगों के लिए काम करता है: didFinishLaunchingWithOptions:। क्या होगा यदि आप एक ऐप बना रहे हैं जो स्टोरीबोर्ड का उपयोग करता है? – ABeanSits
मुझे वास्तव में यह कोड कहां रखना चाहिए? मेरे वर्तमान लक्ष्य में ऐपडिलेगेट नहीं है। और यदि मैं इसे अपने यूनिटटेस्ट लक्ष्य में जोड़ता हूं, तो यह कुछ भी नहीं बदलता है। (मैं एक्सकोड 4.6 का उपयोग कर रहा हूं) –