iOS面试题:基于CTMediator的组件化方案,有哪些核心组成?

假如主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面试题合集

你可能感兴趣的:(iOS面试题:基于CTMediator的组件化方案,有哪些核心组成?)