ZPPRouter
注: SPM 每一个组件最终生成的都是 framwork库 意味着组件存在命名空间(优点)
ZPPRouter 使用示例:
- 定义 xxxProtocol
public protocol xxxProtocol: UIViewController {
}
- 实现获取方法
extension JLRouteProtocol where Self == ZPPRouter<xxxProtocol> {
@discardableResult
public static func makeDestination(config: ((xxxProtocol) -> Void)) -> xxxProtocol {
let item = makeDestination()
config(item)
return item
}
@discardableResult
public static func makeDestination() -> xxxProtocol {
return UIViewController()
}
}
extension UIViewController: xxxProtocol {}
- 获取 UIViewController
let vc = ZPPRouter<xxxProtocol>.makeDestination()
或者
ZPPRouter<xxxProtocol>.makeDestination {
$0.view.backgroundColor = .red
}
Dome:
https://github.com/ZPP506/ZPPRouter
推荐实践
ZPPRouterCenter:
- 引用所有组件
ZPPRouterService:
- 定义组件对外协议
- 定义获取组件方法