iOS 三种路由对比(Target-Action,Protocol, URL)

RouterApp

介绍

三种经典路由介绍,URL路由,Protocol路由 , Target-Action路由

Target-Action

优点

1. 无需注册路由,避免了load里注册影响启动速度
2. 不用维护全局路由表,避免了查找对应路由
3. 统一了路由入口
4. 进行了一定的安全处理

缺点

1. 不能多端使用同一套路由H5,Android
2. 增加了文件,同时在获取target,sel时存在一定的硬编码

核心实现

  利用Runtime,结合一部分硬编码来实现路由的调用
```

[target performSelector:action withObject:params]
```

注意事项

通过NSInvocation的getReturnValue时,如果是对象类型,在用id类型接受时,引用计数没有加一,需要特殊处理;直接使用可能造成Crash。可以通过 (__bridge id)xxx 来解决内存管理的问题
 ```
     if (strcmp(signature.methodReturnType, @encode(NSString)) == 0) {
    NSInvocation *invocation = [[NSInvocation alloc] init];
    [invocation setArgument:&params atIndex:2];
    invocation.target = target;
    id result;
    [invocation invoke];
    [invocation getReturnValue:&result];        
    return result;
}
 ```

Protocol路由

优点

1. 符合swift的思想, 面向协议编程
2. 安全性高,在编译阶段就可以检测出问题
3. 模块解耦

缺点

1. 无法多端通用
2. 需要进行协议的注册

核心实现

 类似与URL路由,通过注册的协议表找到对应的注册的实体。之后执行实体实现的协议方法

UNDEFINED 复制 全屏

URL路由

优点

1. 多端通用
2. 统一路由入口
3. 学习成本低,易使用

缺点

1. 需要load注册
2. 涉及硬编码
3. 只能通过字典传参

核心实现

通过注册路由,来维护一张路由表,在调用路由时,通过路由查找对应的实现。注意路由中传递的参数。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值