Commit c3a5da24 authored by jz's avatar jz

优化代码

parent f49f376c
...@@ -29,26 +29,39 @@ ...@@ -29,26 +29,39 @@
#pragma mark - Table view data source #pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
#warning Incomplete implementation, return the number of sections return 1;
return 10;
} }
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
#warning Incomplete implementation, return the number of rows return 10;
return 1;
} }
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
if (indexPath.row == 0) {
cell.textLabel.text = @"pushScheme";
} else if (indexPath.row == 1) {
cell.textLabel.text = @"pushScheme:completeBlock";
} else if (indexPath.row == 2) {
cell.textLabel.text = @"pushScheme: params:routerBlock";
} else {
cell.textLabel.text = [NSString stringWithFormat:@"%点我跳---ld",indexPath.row]; cell.textLabel.text = [NSString stringWithFormat:@"%点我跳---ld",indexPath.row];
}
return cell; return cell;
} }
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *vc = [[GMRouter sharedInstance] pushScheme:@"common" completeBlock:^(NSDictionary * _Nonnull params) { if (indexPath.row == 0) {
[[GMRouter sharedInstance] pushScheme:@"common"];
} else if (indexPath.row == 1) {
[[GMRouter sharedInstance] pushScheme:@"common" completeBlock:NULL];
} else if (indexPath.row == 2) {
[[GMRouter sharedInstance] pushScheme:@"common" params:@{} completeBlock:^(NSDictionary * _Nonnull params) {
NSLog(@"收到回调");
}]; }];
}
} }
......
...@@ -39,8 +39,9 @@ ...@@ -39,8 +39,9 @@
// return YES; // return YES;
// } // }
if (self.routerBlock) { if (self.routerCompleteBlock) {
self.routerBlock(@{@"a":@10}); // self.routerBlock(@{@"a":@10});
self.routerCompleteBlock(@{@"a":@10});
} }
return YES; return YES;
} }
......
...@@ -5,7 +5,7 @@ PODS: ...@@ -5,7 +5,7 @@ PODS:
- GMCache - GMCache
- MagicalRecord - MagicalRecord
- MJExtension - MJExtension
- GMRouter (0.2.4): - GMRouter (0.2.6):
- GMPhobos - GMPhobos
- MJExtension - MJExtension
- MagicalRecord (2.3.2): - MagicalRecord (2.3.2):
...@@ -33,7 +33,7 @@ EXTERNAL SOURCES: ...@@ -33,7 +33,7 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
GMCache: b78d8e46db864405e91d226ce640cc80d966c611 GMCache: b78d8e46db864405e91d226ce640cc80d966c611
GMPhobos: 981b9c9509945eaa28b4ad6a5376eb78f3fd54b5 GMPhobos: 981b9c9509945eaa28b4ad6a5376eb78f3fd54b5
GMRouter: 1445202be8e6c80d04a9f8c1e38f9ebbec728abf GMRouter: b7411f9fef73aa3e07e769ee9607fae57b616e38
MagicalRecord: 53bed74b4323b930992a725be713e53b37d19755 MagicalRecord: 53bed74b4323b930992a725be713e53b37d19755
MJExtension: 635f2c663dcb1bf76fa4b715b2570a5710aec545 MJExtension: 635f2c663dcb1bf76fa4b715b2570a5710aec545
TMCache: 95ebcc9b3c7e90fb5fd8fc3036cba3aa781c9bed TMCache: 95ebcc9b3c7e90fb5fd8fc3036cba3aa781c9bed
......
...@@ -8,10 +8,15 @@ ...@@ -8,10 +8,15 @@
#import "GMRouter.h" #import "GMRouter.h"
#import "UIResponder+router.h" #import "UIResponder+router.h"
NS_ASSUME_NONNULL_BEGIN //NS_ASSUME_NONNULL_BEGIN
extern NSString *const GMRouterProtocolPrefix; extern NSString *const GMRouterProtocolPrefix;
@interface GMRouter (gm) @interface GMRouter (gm)
/**
* 初始化Map
*
*/
- (void)initializeRouteMap;
/** /**
* 添加的模块例如: Target_common * 添加的模块例如: Target_common
...@@ -30,10 +35,10 @@ extern NSString *const GMRouterProtocolPrefix; ...@@ -30,10 +35,10 @@ extern NSString *const GMRouterProtocolPrefix;
* 通过协议 跳转到对应的vc * 通过协议 跳转到对应的vc
* @param urlScheme 协议名字 * @param urlScheme 协议名字
* 例如gengmei://welfare_special?service_id=5930&is_new_special=0 * 例如gengmei://welfare_special?service_id=5930&is_new_special=0
* @param routerBlock 需要回调的block * @param completeBlock 需要回调的block
* @return vc的实例 * @return vc的实例
*/ */
- (id)pushScheme:(NSString *)urlScheme completeBlock:(GMRouterBlock)routerBlock; - (id)pushScheme:(NSString *)urlScheme completeBlock:(GMRouterCompleteBlock)completeBlock;
/** /**
* 通过协议 跳转到对应的vc * 通过协议 跳转到对应的vc
...@@ -41,15 +46,10 @@ extern NSString *const GMRouterProtocolPrefix; ...@@ -41,15 +46,10 @@ extern NSString *const GMRouterProtocolPrefix;
* 例如gengmei://welfare_special * 例如gengmei://welfare_special
* @param params 创建vc初始化要传递的参数 * @param params 创建vc初始化要传递的参数
* {@"service_id": @"5930",@"is_new_special": @0} * {@"service_id": @"5930",@"is_new_special": @0}
* @param completeBlock 需要回调的block
* @return vc的实例 * @return vc的实例
*/ */
- (id)pushScheme:(NSString *)urlScheme params:(NSDictionary *)params routerBlock:(GMRouterBlock)routerBlock; - (id)pushScheme:(NSString *)urlScheme params:(NSDictionary *)params completeBlock:(GMRouterCompleteBlock)completeBlock;
/**
* 初始化Map
*
*/
- (void)initializeRouteMap;
@end @end
NS_ASSUME_NONNULL_END //NS_ASSUME_NONNULL_END
...@@ -15,9 +15,6 @@ ...@@ -15,9 +15,6 @@
#pragma clang diagnostic ignored "-Wundeclared-selector" #pragma clang diagnostic ignored "-Wundeclared-selector"
#pragma clang diagnostic ignored "-Warc-performSelector-leaks" #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
NSString *const GMRouterActionPrefix = @"Action_";
NSString *const GMRouterActionSuffix = @":";
NSString *const GMRouterTargetPrefix = @"Target_";
NSString *const GMRouterProtocolPrefix = @"gengmei://"; NSString *const GMRouterProtocolPrefix = @"gengmei://";
/** /**
增加一个模块, 需要在路由做映射, 增加一个模块, 需要在路由做映射,
...@@ -37,22 +34,21 @@ static NSMutableDictionary *routeMap = nil; ...@@ -37,22 +34,21 @@ static NSMutableDictionary *routeMap = nil;
self.targets = [NSMutableArray arrayWithObjects:GMRouterTargetAI, GMRouterTargetBanking, GMRouterTargetCommunity, GMRouterTargetWeb, nil]; self.targets = [NSMutableArray arrayWithObjects:GMRouterTargetAI, GMRouterTargetBanking, GMRouterTargetCommunity, GMRouterTargetWeb, nil];
} }
#pragma mark - 跳转协议方法
- (id)pushScheme:(NSString *)urlScheme { - (id)pushScheme:(NSString *)urlScheme {
return [self pushScheme:urlScheme completeBlock:NULL]; return [self pushScheme:urlScheme completeBlock:NULL];
} }
- (id)pushScheme:(NSString *)urlScheme completeBlock:(GMRouterBlock)routerBlock { - (id)pushScheme:(NSString *)urlScheme completeBlock:(GMRouterCompleteBlock)completeBlock {
return [self pushScheme:urlScheme params:@{} completeBlock:completeBlock];
}
- (id)pushScheme:(NSString *)urlScheme params:(NSDictionary *)params completeBlock:(GMRouterCompleteBlock)completeBlock {
if (![urlScheme hasPrefix:GMRouterProtocolPrefix]) { if (![urlScheme hasPrefix:GMRouterProtocolPrefix]) {
urlScheme = [NSString stringWithFormat:@"%@%@", GMRouterProtocolPrefix ,urlScheme]; urlScheme = [NSString stringWithFormat:@"%@%@", GMRouterProtocolPrefix ,urlScheme];
} }
if (!urlScheme.length) { return nil; } if (!urlScheme.length) { return nil; }
NSString *encodeUrlScheme = [self URLEncodeString:urlScheme];
NSDictionary *params = [self getParams:encodeUrlScheme];
return [self pushScheme:encodeUrlScheme params:params completeBlock:routerBlock];
}
- (id)pushScheme:(NSString *)urlScheme params:(NSDictionary *)params completeBlock:(GMRouterBlock)routerBlock {
NSMutableDictionary *allParams = [NSMutableDictionary dictionaryWithDictionary:params]; NSMutableDictionary *allParams = [NSMutableDictionary dictionaryWithDictionary:params];
NSString *encodeUrlScheme = [self URLEncodeString:urlScheme]; NSString *encodeUrlScheme = [self URLEncodeString:urlScheme];
NSString *host = [self getHost:urlScheme]; NSString *host = [self getHost:urlScheme];
...@@ -65,16 +61,16 @@ static NSMutableDictionary *routeMap = nil; ...@@ -65,16 +61,16 @@ static NSMutableDictionary *routeMap = nil;
//如果是push 过来的 或者需要回调的在此赋值 //如果是push 过来的 或者需要回调的在此赋值
if ([vc isKindOfClass:[UIViewController class]]) { if ([vc isKindOfClass:[UIViewController class]]) {
UIViewController *VC = (UIViewController *)vc;
[self vcAutoIsPushWith:vc params:params]; [self vcAutoIsPushWith:vc params:params];
} }
// 赋值回调过程 // 赋值回调过程
if ([vc isKindOfClass:[UIResponder class]]) { if ([vc isKindOfClass:[UIResponder class]]) {
UIResponder *VC = (UIResponder *)vc; UIResponder *respondeer = (UIResponder *)vc;
__weak typeof(self) weakSelf = self; respondeer.routerCompleteBlock = ^(NSDictionary * _Nonnull params) {
VC.routerBlock = ^(NSDictionary * _Nonnull params) { if (completeBlock) {
routerBlock(params); completeBlock(params);
}
}; };
} }
return vc; return vc;
......
...@@ -8,10 +8,10 @@ ...@@ -8,10 +8,10 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
typedef void(^GMRouterBlock)(NSDictionary *params); typedef void(^GMRouterCompleteBlock)(NSDictionary *params);
@interface UIResponder (router)
@property (nonatomic, copy) GMRouterBlock routerBlock;
@interface UIResponder (router)
@property (nonatomic, copy) GMRouterCompleteBlock routerCompleteBlock;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END
...@@ -9,12 +9,11 @@ ...@@ -9,12 +9,11 @@
#import <objc/runtime.h> #import <objc/runtime.h>
@implementation UIResponder (router) @implementation UIResponder (router)
- (GMRouterBlock)routerBlock { - (GMRouterCompleteBlock)routerCompleteBlock {
return objc_getAssociatedObject(self, @selector(routerBlock)); return objc_getAssociatedObject(self, @selector(routerCompleteBlock));
} }
- (void)setRouterBlock:(GMRouterBlock)routerBlock { - (void)setRouterCompleteBlock:(GMRouterCompleteBlock)routerCompleteBlock {
objc_setAssociatedObject(self, @selector(routerBlock), routerBlock, OBJC_ASSOCIATION_COPY_NONATOMIC); objc_setAssociatedObject(self, @selector(routerCompleteBlock), routerCompleteBlock, OBJC_ASSOCIATION_COPY_NONATOMIC);
} }
@end @end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment