ZIKRouter 使用教程

ZIKRouter 使用教程

ZIKRouterInterface-oriented router for discovering modules, and injecting dependencies with protocol in Objective-C and Swift.项目地址:https://gitcode.com/gh_mirrors/zi/ZIKRouter

项目介绍

ZIKRouter 是一个基于接口的模块管理工具,旨在通过路由机制实现模块间的解耦和动态调用。它支持编译时检查,确保类型安全,减少重构和维护成本。ZIKRouter 特别适用于 VIPER 架构,但也兼容 MVC 等其他架构模式。

项目快速启动

安装 ZIKRouter

首先,通过 CocoaPods 安装 ZIKRouter:

pod 'ZIKRouter'

创建路由

假设我们有一个 EditorViewController,我们需要为其创建一个路由:

// EditorRouter.h
#import <ZIKRouter/ZIKRouter.h>

@interface EditorRouter : ZIKRouter
@end

// EditorRouter.m
#import "EditorRouter.h"
#import "EditorViewController.h"

@implementation EditorRouter

+ (void)registerRoutableDestination {
    [self registerDestination:[EditorViewController class] 
                     forRoute:ZIKRoutable(EditorViewController)];
}

- (UIViewController *)destinationWithConfiguration:(ZIKViewRouteConfiguration *)configuration {
    return [[EditorViewController alloc] init];
}

@end

使用路由

在需要使用 EditorViewController 的地方,通过路由进行调用:

[ZIKRouterToView(EditorViewController) performPath:ZIKViewRoutePath.pushFrom(self) 
                                      configuring:^(ZIKViewRouteConfiguration *config) {
    config.prepareDestination = ^(id<EditorViewControllerProtocol> destination) {
        // 配置 destination
    };
}];

应用案例和最佳实践

VIPER 架构中的应用

ZIKRouter 最初设计用于 VIPER 架构,以下是一个简单的 VIPER 模块示例:

// TimeServiceRouter.h
#import <ZIKRouter/ZIKRouter.h>

@interface TimeServiceRouter : ZIKServiceRouter
@end

// TimeServiceRouter.m
#import "TimeServiceRouter.h"
#import "TimeService.h"

@implementation TimeServiceRouter

+ (void)registerRoutableDestination {
    [self registerDestination:[TimeService class] 
                     forRoute:ZIKRoutable(TimeService)];
}

- (id<TimeServiceInput>)destinationWithConfiguration:(ZIKServiceRouteConfiguration *)configuration {
    return [[TimeService alloc] init];
}

@end

TestViewController 中使用 TimeService

- (void)callTimeService {
    id<TimeServiceInput> timeService = [ZIKRouterToService(TimeServiceInput) makeDestination];
    self.timeLabel.text = [timeService currentTimeString];
}

MVC 架构中的应用

ZIKRouter 同样适用于 MVC 架构,以下是一个简单的 MVC 模块示例:

// UserProfileRouter.h
#import <ZIKRouter/ZIKRouter.h>

@interface UserProfileRouter : ZIKRouter
@end

// UserProfileRouter.m
#import "UserProfileRouter.h"
#import "UserProfileViewController.h"

@implementation UserProfileRouter

+ (void)registerRoutableDestination {
    [self registerDestination:[UserProfileViewController class] 
                     forRoute:ZIKRoutable(UserProfileViewController)];
}

- (UIViewController *)destinationWithConfiguration:(ZIKViewRouteConfiguration *)configuration {
    return [[UserProfileViewController alloc] init];
}

@end

MainViewController 中使用 UserProfileViewController

[ZIKRouterToView(UserProfileViewController) performPath:ZIKViewRoutePath.pushFrom(self) 
                                           configuring:^(ZIKViewRouteConfiguration *config) {
    config.prepareDestination = ^(id<UserProfileViewControllerProtocol> destination) {
        // 配置 destination
    };
}];

典型生态项目

ZIKRouter 可以与其他开源项目结合使用,例如:

  • RxSwift:结合 RxSwift 实现响应式编程。
  • Moya:结合 Moya 进行网络请求管理。
  • SnapKit:结合 SnapKit 进行自动布局。

通过这些组合,可以进一步提高项目的可维护性和

ZIKRouterInterface-oriented router for discovering modules, and injecting dependencies with protocol in Objective-C and Swift.项目地址:https://gitcode.com/gh_mirrors/zi/ZIKRouter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲍丁臣Ursa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值