一、前言

  • WWDC2014 苹果在 iOS 上开放了动态库,这给了我们一个很大的想象空间。动态库即动态链接库,是 Cocoa/Cocoa Touch 程序中使用的一种资源打包方式,可以将代码文件、头文件、资源文件、说明文档等集中在一起,方便开发者使用。动态库在编译时并不会被拷贝到程序的可执行文件(也就是 mach-o)中,等到程序运行时,动态库才会被真正加载。
  • 动态库运行时才载入的特性,也可以让我们随时对库进行替换,而不需要重新编译代码。这样我们就可以做很多事情,比如应用插件化及动态更新:
    • 应用插件化:目前很多应用功能越做越多,软件显得越来越臃肿,如果软件的功能模块也能像懒加载那样按需加载,在用户想使用某个功能的时候让其从网络下载,然后手动加载动态库,实现功能的插件化,就再也不用担心功能点的无限增多了,这该是件多么美好的事。
    • 应用模块动态更新:当软件中的某个功能点出现了严重的 bug,或者想更新某个功能,这时候只需要在适当的时候从服务器上将新版本的动态库文件下载到本地,然后在用户重启应用的时候即可实现新功能的展现。
  • 那么,如何使用动态 Framework 的方式实现 App 的插件化及动态更新?

① 实现思路

  • 将 App 中的某个模块的内容独立成一个动态 Framework 的形式,在用户想使用某个功能的时候,根据配置列表从服务器上将对应的动态库文件下载到沙盒,然后加载动态库并由 principalClass 进入独立功能模块,实现功能的插件化动态

iOS之深入解析插件化架构相关推荐

  1. 【设计】1359- Umi3 如何实现插件化架构

    插件化架构 插件化架构(Plug-in Architecture),也被称为微内核架构(Microkernel Architecture),是一种面向功能进行拆分的可扩展性架构,在如今的许多前端主流框 ...

  2. 技术期刊 · 路尘终见泰山平 | 微前端及插件化架构在 Wix 的实践;编辑器架构的第二路径;业务中的前端组件化体系……

    蒲公英 · JELLY技术期刊 Vol.47 不想当架构师的程序员不是"合格"的程序员?这一类的言论在很多文章中应该很常见吧,我们需要架构思维,要有抽象能力,要学会分层--需要的太 ...

  3. 前端进阶:跟着开源项目学习插件化架构

    一.微内核架构简介 1. 1 微内核的概念 微内核架构(Microkernel Architecture),有时也被称为插件化架构(Plug-in Architecture),是一种面向功能进行拆分的 ...

  4. 大型 Web 应用插件化架构探索

    简介:随着 Web 技术的逐渐成熟,越来越多的应用架构趋向于复杂,例如阿里云等巨型控制台项目,每个产品下都有各自的团队来负责维护和迭代.不论是维护还是发布以及管控成本都随着业务体量的增长而逐渐不可控. ...

  5. iOS插件化架构探索

    +前言 WWDC2014苹果在iOS上开放了动态库,这给了我们一个很大的想象空间. 动态库即动态链接库,是Cocoa/Cocoa Touch程序中使用的一种资源打包方式,可以将代码文件.头文件.资源文 ...

  6. iOS动态库实现插件化

    1.动态库制作 p1.png 选择Framework,创建动态库. Framework分动态.静态两种,可以通过下面路径查看 TARGETS->Build Settings(搜索mach-o)- ...

  7. iOS之深入解析App的架构设计

    一.概述 ① 应用架构 App 架构是软件设计的一个分支,它关心的是如何设计一个 App 的结构.具体来说,它关注于两个方面:如何将 App 分解为不同的接口和概念层次部件,以及这些部件之间和自身的不 ...

  8. 案例精选 | 蘑菇街、滴滴、淘宝、微信的组件化架构解析

    导读:前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬 ...

  9. vue2.0 class声明组件_案例精选 | 蘑菇街、滴滴、淘宝、微信的组件化架构解析

    导读:前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬 ...

最新文章

  1. 组合特征(三)tfidf(word+article+length)
  2. 528. 按权重随机选择
  3. “诺奖风向标”2021拉斯克奖公布:授予mRNA疫苗、光遗传学以及戴维·巴尔的摩...
  4. JMX 与系统管理--转
  5. pytorch —— nn网络层 - 卷积层
  6. Java基础---API概述---常用类(Object类/String类)---equals和==
  7. android 模仿微信布局,【Android初学者】框架布局:仿微信页面制作
  8. 转换onnx_模型转换工具X2Paddle操作大全
  9. SpringCloud 微服务消费者之间相互调用的方式
  10. python中element什么意思_什么是Python中等效的’nth_element’函数?
  11. 关于DSP28开发环境CCS6常见报错汇总(未完待续)
  12. 数据可视化——tableau 数据报表样例(报表模板)
  13. 很有意境的语句[转]
  14. dubbo系列九、dubbo路由规则和蓝绿切换
  15. 三星 s4(i9502) android4.4rom 官方,三星S4(I9500)刷机包 Android4.4 官方精简 稳定流畅 极速省电 完整root权限 V1.0...
  16. 现代汉语常用字与国标一级字的比较
  17. Vue2.0 饿了么报错: Unexpected side effect in lis tShow computed property
  18. 摩托罗拉Z2硬改相机无人直播刷机教程
  19. 《梦里花落知多少》的经典语句(怀念)
  20. 树上倍增法求最近公共祖先LCA

热门文章

  1. OSChina 周三乱弹 ——用程序员思维找妹子
  2. 浅谈安卓逆向协议(四)- ida pro - 小红书
  3. 【iOS遇到的问题】switch控件--在设置switch按钮状态为on或者off,运行app,模拟器黑屏
  4. 改了计算机名oracle,修改计算机名字导致oracle连接不上的解决方案
  5. java codeCache
  6. 用js实现返回上一步操作
  7. 计算机组装与维护集体备课,浅谈集体备课
  8. OpenMP Sections
  9. C++沙海拾遗(三)
  10. 一款二次元风格好看的视频jiexi官网