BeeHive模块注册
BeeHive是阿里巴巴開源的一個模塊化框架,是app模塊化編程的一種實現方案。都知道項目一旦大了起來單單的mvc架構就很難支撐了,由此我們需要將代碼模塊化處理,對業務模塊進行業務分離,達到內聚、分離的效果。beehive也是由此而生,雖還不夠完善,但是模塊化思想還是值得學習總結的。
BeeHive框架主體包含兩部分:(1)Modules的管理(2)Protocol的管理
先總結下BeeHive是怎么對模塊進行拆分與管理的。
首先是進行模塊注冊,在BeeHive中是通過BHModuleManager來管理各個模塊的。BHModuleManager中只會管理已經被注冊過的模塊。注冊方式有三種:
(1)通過BeeHiveMod(name)宏
大概意思就是我們需要指定一個特殊的段,來存放我們想要的數據。這里我們就把數據存在保存初始化過的全局靜態變量和局部靜態變量的data數據段里面的"BeehiveMods"段中。
有存自然就有取,取的代碼在BHAnnotation中管理著
這里的sectionName其實就是我們定義BeeHiveDATA時所傳的sectname,返回的configs數組包含著我們所有通過BeeHiveMod宏注冊的class名字符串數組。拿到我們注冊了的這個數組要做什么呢
實際上只是遍歷了一下然后就把這個數組拿給BHModuleManager去處理了,這里有些疑惑,不知道是不是因為版本更新了的緣故,mods在現在的demo里已經不是單例了,還不確定這樣改的意義何在會不會有什么影響。
接下來就是BHModuleManager里面的事情了,也是核心處理的地方:
一些需要說明已經在上述代碼里面添加了注釋。BHModules是一個NSMutableArray,里面存的都是一個個的字典,字典里面有兩個Key,一個是@"moduleLevel",另一個是@"moduleClass"。存儲已經注冊的Module的時候都要判斷Level。還有一點需要說明的,所有需要注冊的Module必須遵循BHModuleProtocol協議,否則不能被存儲。Level具體有什么用后面再說。(2)加載plist文件
實際上這里就是將我們注冊的地方寫到plist文件中,解析一下plist文件將dictionary添加到BHModules中,與上面大相徑庭。
(3)使用Load方法注冊
第三種方法就是在類中重寫load方法給當前類進行注冊,這里也有個疑問,load方法只有在文件被引用的時候才會調用,如果module文件沒有被引用怎么注冊呢。
Load方法還可以用一個宏BH_EXPORT_MODULE來完成,其中isAsync傳yes表示module為異步加載。反之為同步加載。
到這里Modules已經全部注冊完成了。
?
轉載于:https://www.cnblogs.com/byxixiblogs/p/8024573.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的BeeHive模块注册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kali入侵windows
- 下一篇: 使用思维导图,优雅的完成自己的代码