美文网首页iOS开发进阶iOS中的静态库和动态库iOS学习笔记
复杂.a静态库的生成和使用(包含Bundle文件和Categor

复杂.a静态库的生成和使用(包含Bundle文件和Categor

作者: 苍眸之宝宝 | 来源:发表于2017-12-24 17:54 被阅读30次

    iOS动态库和静态库知识专题导航

    1.iOS中关于库的基本知识

    2.简单.a静态库的生成和使用

    3.复杂.a静态库的生成和使用(包含Bundle文件和Category分类文件)

    4.framework动态库和静态库的生成和使用

    5.库其它知识拾遗和常见问题

    (一)简介

        上一节我们讲了有关iOS中静态库和动态库的知识和 简单.a静态库文件的生成,这一节我们详细讲一下带有Bundle资源文件夹的.a文件的生成。上篇文章链接iOS中关于库的基本知识和.a静态库生成

        大部分三方框架都是带有图片、xib文件、plist文件等一些资源。在iOS中.a静态库中对资源文件进行管理,都是使用Bundle文件。

    (二)复杂.a静态库生成

    1.创建.a静态库工程

    .a创建选项 编辑工程名称

    2.为.a静态库工程提交Bundle资源文件夹

    添加Bundle资源文件夹1 添加Bundle资源文件夹2 添加完成界面

    3.设置.a工程和Bundle资源文件夹

        .a工程的设置见iOS中关于库的基本知识和.a静态库生成(一)中“设置.a文件的环境模式、路径和可见的文件”。

        设置Bundle资源文件夹:Bundle资源文件夹默认是macOS系统的,修改为iOS系统。

    设置Bundle系统

    Bundle资源文件夹参数COMBINE_HIDPI_IMAGES默认为YES,即图片是tiff格式;修改该参数为NO。

    设置Bundle图片模式

    4.Bundle资源文件夹添加资源

        在Resourc文件夹下添加图片、Xib文件、plist文件等资源。

    Bundle添加资源

    5.调用Bundle资源代码书写

        代码:


    + (void)logMethodName {

    NSLog(@"TextObject_logFunctionName");

    }

    + (UIImage *)getLibraryBundleImage {

    // 获取Resource.bundle文件夹路径

    NSString * rescourcePath = [[NSBundle mainBundle] pathForResource:@"Resource" ofType:@"bundle"];

    // 获取Resource.bundle文件夹bundle对象

    NSBundle * bundle =[NSBundle bundleWithPath:rescourcePath];

    // 获取Resource.bundle文件夹中调用图片的路径

    NSString * imagePath = [bundle pathForResource:@"null_page" ofType:@"png"];

    // 获取图片

    UIImage * image = [UIImage imageWithContentsOfFile:imagePath];

    return image;

    }



    添加代码

    6.生成.a文件

        选择MyLibrary,command+b编辑,生成.a文件。选择Resource,command+b编辑,生成Resource.bundle文件.

    生成.a文件 生成Resource.bundle文件

    7.查看.a文件编译环境和合并.a文件

        见iOS中关于库的基本知识和.a静态库生成中,“6.查看.a文件编译环境”和“7.合并调试环境和发布环境下的.a文件”。

    8.在工程中使用.a文件

        在工程中导入.h文件夹和.a文件。

    导入.h文件夹和.a文件

       在工程中需要调用.a库中的文件中,导入头文件,代码中调用.a中封装的方法。如果.a中对应的方法的.m文件也可访问,可以在.m中修改该代码的实现。

    调用代码 运行结果

        如果.a静态库中包含OC分类、C文件、C++文件对Other Linker Flags进行相应设置设置。如果没设置编译时会报错“unrecognized selector sent to class”。

    Other Linker Flags没设置报错

        设置如下图中的1、2、3任意一选项,运行成功。

    设置Other Linker Flags运行成功

    注意:在模拟器环境下及调试环境下和在真机环境下及发布环境下,必须导入对应的.a文件或者合成两环境下的.a文件,否则会出错,导致工程编译失败。

    相关文章

      网友评论

        本文标题:复杂.a静态库的生成和使用(包含Bundle文件和Categor

        本文链接:https://www.haomeiwen.com/subject/qfjhgxtx.html