Giter Club home page Giter Club logo

evrouter's Introduction

EVRouter

基于Target-Action模式的轻量级路由组件

  • 可自动识别并调用类方法和实例方法;
  • 只需传入类名和方法名,即可实现本地和远程调用;
  • 支持自定义安全处理策略;
  • 支持远程下发路由表;

Install with cocoapods

pod 'EVRouter', '~> 0.0.1'

API

@interface EVRouter : NSObject

/**
 可配置路由安全策略
 */
@property (nonatomic, strong, readwrite) id<EVRouterSecurityPolicy> securityPolicy;

/**
 更新路由表代理【当调用更新路由表update方法时,需实现此代理】
 */
@property (nonatomic, strong) id<EVRouterListUpdatePolicy> updatePolicy;

/**
 单例
 @return EVRouter
 */
+ (instancetype)shared;

/**
 本地路由
 @param targetName 路由目标类
 @param actionName 路由目标方法(优先寻找类方法;没有则寻找实例方法)
 @return 路由目标方法返回值,如果为void,则返回nil;int等类型返回NSNumber;struct,pointer等类型返回 NSValue。
 */
- (id)performTarget:(NSString *)targetName action:(NSString *)actionName;

/**
 本地路由
 @param targetName 路由目标类
 @param actionName 路由目标方法(优先寻找类方法;没有则寻找实例方法)
 @param params 路由目标方法入参(必须为字典形式)
 @return 路由目标方法返回值,如果为void,则返回nil;int等类型返回NSNumber;struct,pointer等类型返回 NSValue。
 */
- (id)performTarget:(NSString *)targetName action:(NSString *)actionName params:(NSDictionary *)params;

/**
 本地路由
 @param targetName 路由目标类
 @param actionName 路由目标方法(优先寻找类方法;没有则寻找实例方法)
 @param params 路由目标方法入参(必须为字典形式)
 @param errorBlock 错误处理,返回的 id 即为该方法的返回值;其处理优先级比EVRouterSecurityPolicy高
 @return 路由目标方法返回值,如果为void,则返回nil;int等类型返回NSNumber;struct,pointer等类型返回 NSValue。
 */
- (id)performTarget:(NSString *)targetName action:(NSString *)actionName params:(NSDictionary *)params error:(id(^)(NSError *err))errorBlock;

/**
 本地路由
 @param targetName 路由目标类
 @param actionName 路由目标方法(只寻找类方法)
 @param params 路由目标方法入参(必须为字典形式)
 @param errorBlock 错误处理,返回的id即为该方法的返回值;其处理优先级比EVRouterSecurityPolicy高
 @return 路由目标方法返回值,如果为void,则返回nil;int等类型返回NSNumber;struct,pointer等类型返回 NSValue。
 */
- (id)performTarget:(NSString *)targetName classAction:(NSString *)actionName params:(NSDictionary *)params error:(id(^)(NSError *err))errorBlock;

/**
 本地路由
 
 @param targetName 路由目标类
 @param actionName 路由目标方法(只寻找实例方法)
 @param params 路由目标方法入参(必须为字典形式)
 @param errorBlock 错误处理,返回的id即为该方法的返回值;其处理优先级比EVRouterSecurityPolicy高
 @return 路由目标方法返回值,如果为void,则返回nil;int等类型返回NSNumber;struct,pointer等类型返回 NSValue。
 */
- (id)performTarget:(NSString *)targetName instanceAction:(NSString *)actionName params:(NSDictionary *)params error:(id(^)(NSError *err))errorBlock;

/**
 远程路由
 @param url format scheme://target/action/actionType?params
 @return 是否调用成功
 */
- (BOOL)performActionWithURL:(NSURL *)url;

/**
 更新路由表(需实现 EVRouterListUpdatePolicy 代理协议)
 */
- (void)updateRouterList;

@end

微信公众号 :汪汪的世界

(WeChat)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.