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

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

ID:35787688

大小:15.95 KB

页数:11页

时间:2019-04-18

ios开发-动态库加载(实时模块更新)_第1页
ios开发-动态库加载(实时模块更新)_第2页
ios开发-动态库加载(实时模块更新)_第3页
ios开发-动态库加载(实时模块更新)_第4页
ios开发-动态库加载(实时模块更新)_第5页
资源描述:

《ios开发-动态库加载(实时模块更新)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、iOS开发-动态库加载(实时模块更新)iOS开发-动态库加载(实时模块更新)作者NiePlus2016.03.2215:10*字数1429阅读2405评论11喜欢14动态库和静态库静态库和动态库是相对编译期和运行期:静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要改静态库;而动态库在程序编译时并不会被链接到目标代码中,只是在程序运行时才被载入,因为在程序运行期间需要动态库的存在。静态库的好处模块化,分工合作,提高了代码的复用及核心技术的保密程度;避免少量改动经常导致大量的重复编译链接;也可以重用,注意不是专享使用。动态库的好处可以将最终可执行文

2、件体积缩小,将整个应用程序分模块,团队合作,将进行分工,影响比较小;多个应用程序共享内存中得同一份库文件,节省资源;可以不重新编译链接可执行文件程序的前提下,更新动态库文件达到更新应用程序的目的;应用插件化。软件版本实时模块升级共享执行可执行文件,在其他大部分平台上,动态库都可以用于不同应用间共享,这就大大节省了内存。从目前来看,iOS仍然不允许进程间共享动态库,己iOS上的动态库只能是私有的,因为我们仍然不能将动态库文件放置在除了自身沙盒以为的其他任何地方。不过iOS8上开发了AppExtension功能,可以为一个应用创建插件,这样主app和插件之间共

3、享动态库还是可以行的。动态库和主工程的创建本文章只针对动态库创建,软件版本实时模块升级进行说明,静态库不做详细解释说明。动态库创建创建工程类型为Framework&Library下的CocoaTouchFramework工程,工程命名DynamicLink;创建继承UIViewController命名为ViewController的控制器,设置背景颜色;//动态库视图颜色self.view.backgroundColor=[UIColorgreenColor];创建继承NSObject命名为DynamicOpenMenth文件,在DynamicOpenMe

4、nth.h中//动态链对外开发方法-(void)startWithObject:(id)objectwithBundle:(NSBundle*)bundle;在DynamicOpenMenth.m中方法实现-(void)startWithObject:(id)objectwithBundle:(NSBundle*)bundle{//初始化第一个controller//这里的重点是资源文件的加载,通常我们在初始化的时候并不是很在意bundle:这个参数,//其实我们所用到的图片、xib等资源文件都是在程序内部中获取的,也就是我们常用的[NSBundlemai

5、nBundle]中获取,所谓的NSBundle本质上就是一个路径,mainBundle指向的是.app下。//而如果我们不指定bundle,则会默认从.app路径下去寻找资源。//不过很显然,我们的动态库是放到“主程序”的document文件下的,所以资源文件是不可能在[NSbundlemainBundle]中获取到的,所以这里我们需要指定bundle参数,这也是传递framework的路径的意义所在ViewController*vc=[[ViewControlleralloc]init];vc.root_bundle=bundle;//转换传递过来的ma

6、inCon参数,实现界面跳转UIViewController*viewCon=(UIViewController*)object;[viewConpresentViewController:vcanimated:YEScompletion:^{NSLog(@"跳转到动态更新模块成功!");}];}在BuildOnlyDevice下编译程序,生成DynamicLink.Framework文件,文件可在工程目录下Products文件夹下ShowInFinder中找到;主工程创建创建SingleViewApplication的工程,命名为DynamicLibra

7、ry。在ViewController.m中实现以下方法-(void)touchesBegan:(NSSetUITouch*>*)toucheswithEvent:(UIEvent*)event{//动态库测试[selfperformSelector:@selector(dynamicLibraryClick)withObject:nil];}-(void)dynamicLibraryClick{//document路径NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,

8、NSUserDomainMask,YES);NSString*do

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。