Я использую категорию для добавления +load
к UIResponder
, чтобы собираемый мной Cocoapod мог получить уведомление didFinishLaunching
, при этом человеку, использующему Cocoapod, не нужно изменять appDelegate
.
Это плохая идея?
Есть ли какие-то последствия для этого, о которых я не думаю?
Категория:
@implementation UIResponder (MyCategory)
+ (void) load
{
[[NSNotificationCenter defaultCenter] addObserver: [Observer sharedInstance]
selector: @selector(didFinishLaunching:) name: UIApplicationDidFinishLaunchingNotification object: nil];
}
@end
Наблюдатель за уведомлением:
#import <Foundation/Foundation.h>
@implementation Observer
+ (id)sharedInstance {
static Observer *bridgeInstance = nil;
@synchronized(self) {
if (bridgeInstance == nil)
bridgeInstance = [[self alloc] init];
}
return bridgeInstance;
}
- (void) didFinishLaunching: (NSNotification*) n
{
UIWindow *appWindow = [[[UIApplication sharedApplication] delegate] window];
NSLog( @"application: %@", [UIApplication sharedApplication] );
NSLog( @"delegate: %@", [[UIApplication sharedApplication] delegate] );
}
@end