解耦方案是針對AppDelegate,通過消息的轉(zhuǎn)發(fā)、GCDMulticastDelegate代理的一對多模式來實(shí)現(xiàn)解耦。以下是核心代碼:
消息轉(zhuǎn)發(fā):
+ (BOOL)resolveInstanceMethod:(SEL)sel{
? ? return NO;
}
- (id)forwardingTargetForSelector:(SEL)aSelector{
? ? if([selfrespondsToSelector:aSelector]) {
? ? ? ? return self;
? ? }
? ? return self.multicastDelegate;
}
添加delegate:
- (void)addImplementationArray:(NSArray *)targets
?? ? ? ? ? ? ? ? ? ? ? ? queue:(dispatch_queue_t)queue;
- (void)addImplementationQueueTarget:(id)target
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? queue:(dispatch_queue_t)queue
需要使用AppDelegate方法的類,需要實(shí)現(xiàn)UIApplicationDelegate協(xié)議。