91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS路由MGJRouter怎么實現

發布時間:2021-08-06 14:01:02 來源:億速云 閱讀:158 作者:小新 欄目:移動開發

這篇文章給大家分享的是有關iOS路由MGJRouter怎么實現的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

背景

最開始想做路由,是因為當時app中有大量與H5之間的交互,原生和H5的跳轉操作比較多比較頻繁,新增一個跳轉又涉及到改代碼發版本,為了統一iOS、安卓和H5的跳轉,引入了路由。

作用

后來發現路由,還可很多作用。Router就像是個調度中心,各個模塊通過路由調度其他模塊,模塊之間不需要相互引用,調度方式更加統一,更加自由,能夠實現解耦的作用,同時也為之后的組件化開發提供了基礎。

iOS路由MGJRouter怎么實現

路由選擇

目前github優秀的路由設計已經有很多,如JLRoutes,MGJRouter,CTMediator。

JLRoutes提供的功能比較復雜,有很多我個人用不上的功能,所以沒有選擇。

CTMediator更適合業務比較復雜的情況,MGJRouter的使用上更加容易上手,功能也比較簡單,更加適用于頁面跳轉這種業務比較多的場景。所以我項目中選擇了MGJRouter

JLRoutes

  1. 集成簡單

  2. 可以處理各種各樣的url

  3. 支持通配符

  4. 支持多個scheme

  5. 比較純粹,不支持打開頁面后的值回傳。要自己再加工。

MGJRouter

  1. 代碼簡單易懂

  2. 功能全面

  3. 支持push值回傳

  4. 支持多scheme

  5. openUrl時支持一個userInfo (造成了跟系統的不統一,多出來的參數還是可以放到url中,傳對象的時候有點用)(模塊內部傳對象可以用,模塊間的話不應該傳對象,會造成耦合)

MGJRouter

MGJRouter就一個單例類,使用前需要通過注冊組件,調用方通過URL調用服務方頁面,通過路由表的映射關系進行關聯,調用方可以傳入復 雜的參數、對象等。

基本跳轉主要是注冊組件,調用openURl方法,傳入參數即可實現。

[MGJRouter registerURLPattern:@"mgj://foo/bar" toHandler:^(NSDictionary *routerParameters) {
  NSLog(@"routerParameterUserInfo:%@", routerParameters[MGJRouterParameterUserInfo]);
}];

[MGJRouter openURL:@"mgj://foo/bar"];

使用一個類來統一管理注冊的方法,再load方法中進行注冊,就不會到處看到注冊的代碼,方便管理。

iOS路由MGJRouter怎么實現

url注冊管理類

很多人說沒有反向傳值的方法,其實和我們其他跳轉一樣,傳參數的時候使用block即可解決。

[MGJRouter openURL:@"LWT://Test3/PushMainVC"withUserInfo:@{
  @"navigationVC" : self.navigationController,
  @"block":^(NSString * text){NSLog(@"%@",text); },
  }
      completion:nil];

感謝各位的閱讀!關于“iOS路由MGJRouter怎么實現”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ios
AI

大渡口区| 南和县| 英超| 交城县| 洪江市| 仙游县| 石棉县| 罗平县| 波密县| 萨迦县| 三台县| 微山县| 榆树市| 临邑县| 攀枝花市| 阜新市| 阳山县| 临泽县| 固安县| 洛川县| 肃宁县| 赞皇县| 行唐县| 土默特右旗| 革吉县| 荥经县| 保靖县| 闽清县| 正蓝旗| 凤山市| 隆安县| 林口县| 贵德县| 铜陵市| 龙井市| 永嘉县| 玛多县| 禹州市| 米脂县| 阿鲁科尔沁旗| 昂仁县|