假如主APP調用某業務A,那么需要以下組成部分:
CTMediator類,該類提供了函數 - (id)performTarget:(NSString *)targetName action:(NSString *)actionName params:(NSDictionary *)params shouldCacheTarget:(BOOL)shouldCacheTarget;
這個函數可以根據targetName生成對象,根據actionName構造selector,然后可以利用performSelector:withObject:方法,在目標上執行動作。業務A的實現代碼,另外要加一個專門的類,用于執行Target Action
類的名字的格式:Target_%@,這里就是Target_A。
這個類里面的方法,名字都以Action_開頭,需要傳參數時,都統一以NSDictionary*的形式傳入。
CTMediator類會創建Target類的對象,并在對象上執行方法。業務A的CTMediator擴展
擴展里聲明了所有A業務的對外接口,參數明確,這樣外部調用者可以很容易理解如何調用接口。
在擴展的實現里,對Target, Action需要通過硬編碼進行指定。由于擴展的負責方和業務的負責方是相同的,所以這個不是問題。
更多:iOS面試題合集