iOS点点滴滴iOS第三方库与框架iOS编程

iOS开发-动态库加载(实时模块更新)

2016-03-22  本文已影响6863人  PlusNie

动态库和静态库

静态库和动态库是相对编译期和运行期:静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要改静态库;而动态库在程序编译时并不会被链接到目标代码中,只是在程序运行时才被载入,因为在程序运行期间需要动态库的存在。

静态库的好处

动态库的好处

软件版本实时模块升级

共享执行可执行文件,在其他大部分平台上,动态库都可以用于不同应用间共享,这就大大节省了内存。从目前来看,iOS仍然不允许进程间共享动态库,己iOS上的动态库只能是私有的,因为我们仍然不能将动态库文件放置在除了自身沙盒以为的其他任何地方。不过iOS8上开发了App Extension功能,可以为一个应用创建插件,这样主app和插件之间共享动态库还是可以行的。

动态库和主工程的创建

本文章只针对动态库创建,软件版本实时模块升级进行说明,静态库不做详细解释说明。

动态库创建

主工程创建

创建Single View Application的工程,命名为DynamicLibrary。

以上为动态库加载主要实现,存在一些的问题需要感兴趣的朋友一起讨论,比如 Class pacteraClass = NSClassFromString(@"DynamicOpenMenth");读取类的时候为什么值为nil等。

目前可以肯定动态库达不到更新效果!了解到JSPatch,可以实时修复iOS线上问题。但JSPatch也有个缺点,不能实现大规模功能模块更新。

技术交流群:193996724

推广iOS开发-Git 命令的简单操作:http://www.jianshu.com/p/8c5483fa707a

本文Demo下载地址:https://github.com/nfl404/iOS_Dynamic_Plug-in 作者:NiePlus

上一篇下一篇

猜你喜欢

热点阅读