MGJRouter原理解析

2024-02-12 22:18
文章标签 mgjrouter 解析 原理

本文主要是介绍MGJRouter原理解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 属性

MGJRouter中有个重要的属性:

@property (nonatomic) NSMutableDictionary *routes;

该属性保存了所有已注册的 URL,其结构类似于:

@{@"project": @{@"query": @{@":keywork": @{@"_": <__NSGlobalBlock__: 0x104ebc100>}}}
}

2. 注册

现有一个路由:

NSString *URLPattern = @"project://query/:keywork";

调用以下方法:

+ (void)registerURLPattern:(NSString *)URLPattern toHandler:(MGJRouterHandler)handler;
+ (void)registerURLPattern:(NSString *)URLPattern toObjectHandler:(MGJRouterObjectHandler)handler;

MGJRouter会调用以下方法:

- (NSArray*)pathComponentsFromURL:(NSString*)URL;

将路由拆解成数组:

@[@"project",@"query",@":keywork"
]

并将其插入routes字典中,最后将handler作为键值保存。

3. 调用

调用以下方法:

+ (void)openURL:(NSString *)URL;
+ (void)openURL:(NSString *)URL completion:(void (^)(id result))completion;
+ (void)openURL:(NSString *)URL withUserInfo:(NSDictionary *)userInfo completion:(void (^)(id result))completion;
+ (id)objectForURL:(NSString *)URL;
+ (id)objectForURL:(NSString *)URL withUserInfo:(NSDictionary *)userInfo;

MGJRouter会调用以下方法:

- (NSMutableDictionary *)extractParametersFromURL:(NSString *)url matchExactly:(BOOL)exactly;

解析url并从routes中查询对应的Block,返回以下数据:

@{@"MGJRouterParameterURL": @"project://query/user",@"block": <__NSGlobalBlock__: 0x104ebc100>,@"keywork": @"user"
}

最后,将数据经过处理,形成最终数据:

@{@"MGJRouterParameterURL": @"project://query/user",@"keywork": @"user"
}

调用注册的handler,返回数据。

这篇关于MGJRouter原理解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/703737

相关文章

Unity GC + C# GC + Lua GC原理

Unity垃圾回收原理 参考文章:垃圾回收 (计算机科学) - 维基百科,自由的百科全书 (wikipedia.org) 在计算机科学中,垃圾回收(英语:Garbage Collection,缩写为GC)是指一种自动的存储器管理机制。当某个程序占用的一部分内存空间不再被这个程序访问时,这个程序会借助垃圾回收算法向操作系统归还这部分内存空间。垃圾回收器可以减轻程序员的负担,也减少程序中的错误。

PID神经网络原理与MATLAB实现(SISO)

序 最近想实现一下PID神经网络,但是书籍和博客都令人头疼,主要是卡在误差反向传播的计算过程中。找一篇通俗易懂的文章实在不易,最终,只能自己静下心,仔细琢磨。只要每一步在逻辑上都是合理的,我们有理由相信能够得到正确的结果。抱着这样的心态,由浅入深,来实现一下。 一、网络结构定义 简单起见,假设一个受控系统单输入 u u u 单输出 x x x ,使用一个PID神经网络来作为控制器

【Datawhale组队学习:Sora原理与技术实战】AIGC技术基础知识

AIGC是什么 AIGC全称叫做AI generated content,AlGC (Al-Generated Content,人工智能生产内容),是利用AlI自动生产内容的生产方式。 在传统的内容创作领域中,PGC(Professionally-generated Content,专业生成内容)和UGC(User-generated Content,用户内容生产)作为两大主流模式,共同构成了

无人机镜头稳定的原理和相关算法

无人机的镜头稳定主要基于两个关键技术:镜头平衡技术和实时电子稳像。无人机镜头稳定的原理和相关算法主要是通过镜头平衡技术和实时电子稳像技术来保持摄像镜头的稳定性,从而拍摄出清晰、稳定的画面。无人机镜头稳定的原理主要是通过传感器和算法来实现的。无人机镜头稳定需要综合运用传感器技术、算法和控制策略,以确保拍摄到稳定、清晰的图像。不同的无人机可能采用不同的稳定方法和算法,具体的实现方式会因无人机的型号和设

攻略 | 如何通过数据解析,优化知识库以满足用户需求

在日常生活和工作中,一个高效且实用的知识库已成为我们的得力助手。但如何确保它不仅仅是信息的堆砌,真正为用户创造价值与效益?接下来,我们将深入探讨这一问题,并借助HelpLook知识库的数据分析功能,带您全面了解如何优化知识库,以更精准地服务于用户。 | 为什么知识库需要接入分析功能? 在追求极致用户体验的时代,知识库成为连接企业与用户的桥梁。通过深度挖掘和分析数据,我们能更精准地理解用户需

自学高效备考2024年AMC10:2000-2023年1250道AMC10真题解析

如何通过自学提高初中和高中数学成绩?现在初中和高中有哪些可以参加的数学竞赛?有没有难度适中、兼具趣味性的数学竞赛?现在参与人数较多的初中、高中数学有哪些?... 如果你也在关注以上问题,不妨看看AMC10美国数学竞赛,可以先系统研究AMC10的历年真题,即使不参加AMC10竞赛,吃透了历年真题1250道和背后的知识体系,那么初中和高中数学一定会学得非常轻松、游刃有余。如果将来要参加AMC10的竞

详细讲解Docker架构的原理、功能以及如何使用

一、简介 1、了解docker的前生LXC LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。 与传统虚拟化技术相比,它的优势在于: (1)与宿主机使用同一个内核

2023年09月CCF-GESP编程能力等级认证Scratch图形化编程四级真题解析

一、单选题(共15题,共30分) 第1题 人们所使用的手机上安装的 App 通常指的是( )。 A:一款操作系统 B:一款应用软件 C:一种通话设备 D:以上都不对 答案:B 第2题 下列流程图的输出结果是?( ) A:9 B:7 C:5 D:11 答案:A 第3题 默认小猫角色,执行下列程序,下列说法正确的是?( ) A:小猫每滑行一次变量增加 1,变量变成 3 后停止 B:

HBase – 存储文件HFile结构解析

HFile是HBase存储数据的文件组织形式,参考BigTable的SSTable和Hadoop的TFile实现。从HBase开始到现在,HFile经历了三个版本,其中V2在0.92引入,V3在0.98引入。HFileV1版本的在实际使用过程中发现它占用内存多,HFile V2版本针对此进行了优化,HFile V3版本基本和V2版本相同,只是在cell层面添加了Tag数组的支持。鉴于此,本文主要针

百度SEO快排原理是什么?如何快速排名方法?

前言:我之前说过我不打算写这个快速排序。 首先,我从来没有在自己的网站上操作过所谓的快速排序。 其次,我不能像网上很多人写的那样透露百度快速排序的秘密(说实话,你可以透露秘密)。 方法是有了,但是真的有用吗? 真正懂的人都是低调赚钱的)。 我只是站在新手的角度,让更多的新手了解一下所谓的百度快队列是什么,以及同行网站是否使用了所谓的快队列技术,以及我们自己应该如何处理。 什么是百度SEO快速排名