簡介
我們在進(jìn)行iOS程序開發(fā)的時(shí)候,Appdelegate中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions實(shí)現(xiàn)太多復(fù)雜邏輯。這樣在Appdelegate代理類中實(shí)現(xiàn)了不應(yīng)有自己來實(shí)現(xiàn)的邏輯操作,現(xiàn)在我們有一種更加優(yōu)雅的方法來解決這個(gè)問題
+ (void)load
{
__block id observer = [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidFinishLaunchingNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
[self makeSomeing];
[[NSNotificationCenter defaultCenter] removeObserver:observer];
}];
}
處理問題的關(guān)鍵是+ (void)load方法,這個(gè)方法在每個(gè)類都從NSObject中繼承有。并且它在類被調(diào)用前總會最先執(zhí)行一次,Appdelegate的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法在執(zhí)行時(shí)會自動發(fā)送一個(gè)UIApplicationDidFinishLaunchingNotification通知,我們在將要被加載進(jìn)Appdelegate中的類自己的+ (void)load方法中添加一個(gè)觀察者,監(jiān)聽這個(gè)信號以一種更加優(yōu)雅內(nèi)聚的方式來實(shí)現(xiàn)程序邏輯。