解藕一種方式。用一種最簡單的方案來實現(xiàn)奋构。
一频伤、有一個FFURI基類贝奇,最基礎(chǔ)三個變量和一個初始方法
scheme:有時候用來區(qū)分是外部協(xié)議 還是 內(nèi)部協(xié)議
uri:跳轉(zhuǎn)路徑
params:傳遞參數(shù)。字典睡雇∶瘸模可以追加參數(shù)。
- (instancetype)uriWithURI:(NSString *)scheme uri:(NSString *) params:(NSDictionary *)params它抱;秕豫、
把param 先做一些參數(shù)矯正key,是否為NSNumber\NSString\JSONObeject观蓄。進行base64拼接到 uri上來混移。uri¶m=@"json字符串"
二、FFURIManager
跳轉(zhuǎn)管理器
負責添加路徑:addPathAction
負責執(zhí)行路徑:runActionWithURI
1.addPathAction
level
withActionBlock:執(zhí)行回調(diào)要處理的內(nèi)容
變量:pathArray數(shù)組: 保存所有添加進來的 path和actionblock
level插入的pathArray位置侮穿。通過對比level值歌径,更容易被查找到。
2.runActionWithURI
2.1判斷是否為內(nèi)部協(xié)議亲茅,不是直接用[[UIApplication sharedApplication] openURL:]]打開回铛。
2.2假如沒有傳遞當前的控制器 最好是傳了狗准。獲取當前正在運行的最頂層viewcontroller,
先遍歷tabbarVC 拿到 selectVC 接著再遍歷最上層茵肃。排除UIAlertController腔长、_UIAlertShimPresentingViewController。
2.3做一個緩存 免姿。比如一開始路徑有500個饼酿。每次都去遍歷很可怕。
把已經(jīng)跳轉(zhuǎn)過的胚膊,先加入緩存故俐,沒有 就從大的路由緩存去取。
key - block的過程紊婉。