使用注冊樹設(shè)計模式,拓展了didFinishLaunchingWithOptions方法积蔚,具體實現(xiàn)如下:
1)生成一份接口協(xié)議(ONEAppDelegateStoreDelegate)全闷,用于和原生協(xié)議對接
2)遵守接口協(xié)議的對象通過bind方法,向ONEAppDelegateStore注冊
使用時鸠项,當(dāng)appdelegate協(xié)議方法觸發(fā)饼暑,回調(diào)對應(yīng)ONEAppDelegateStore的方法,ONEAppDelegateStore對應(yīng)方法則遍歷注冊對象狡忙,詢問是否實現(xiàn)該方法梳虽,如果實現(xiàn),則調(diào)用注冊對象中的方法灾茁。
一些缺陷: ONEAppDelegateStoreDelegate的方法和ONEAppDelegateStore方法相同窜觉,重復(fù)。
整個調(diào)用過程删顶,需要在觸發(fā)了appdelegate的方法后竖螃,再調(diào)用ONEAppDelegateStore的方 法,顯得比較冗余逗余。
不過ONEAppDelegateStoreDelegate是可擴展的接口特咆,他包含了appdelegate中需要使用的方法
優(yōu)點&缺點:下發(fā)了事件處理的時機,允許組件录粱,在自己內(nèi)部處理系統(tǒng)時機(前后臺等)腻格,好的方面看,解放了appdelegate事件處理方法啥繁,不需要所有組件通過通知的方法或在appdelegate內(nèi)部添加代碼的方法處理事件菜职;不好的地方,代碼散落旗闽,不易維護酬核,同時每當(dāng)接收到appdelegate方法后,都需要遍歷全部注冊對象适室,查看是否實現(xiàn)該方法嫡意;本質(zhì)上和通知方法沒有區(qū)別,一個是在系統(tǒng)提供的組件進(jìn)行注冊捣辆,一個是自己提供的組件進(jìn)行注冊蔬螟。