iOS 封装framework

作者: 执着_7748 | 来源:发表于2018-09-14 17:33 被阅读73次

    1. 创建framework

    关于创建静态库framework,新建project选择以下标签,然后自己命名

    在创建好的framework中创建需要的类或者category,比如以下创建了一个简单的alertShow


    给alertShow添加一个类方法,方便检查framework封装是否达到目的

    #import <Foundation/Foundation.h>
    
    @interface AlertShow : NSObject
    
    + (void)showMessage:(NSString *)message;
    
    @end
    
    #import "AlertShow.h"
    
    @implementation AlertShow
    
    + (void)showMessage:(NSString *)message
    {
        NSLog(@"%@", message);
    }
    
    @end!
    
    

    这里还需要把公开的类添加到AlertShowFrameWork里面

    #import <UIKit/UIKit.h>
    
    //! Project version number for AlertShowFrameWork.
    FOUNDATION_EXPORT double AlertShowFrameWorkVersionNumber;
    
    //! Project version string for AlertShowFrameWork.
    FOUNDATION_EXPORT const unsigned char AlertShowFrameWorkVersionString[];
    
    // In this header, you should import all the public headers of your framework using statements like #import <AlertShowFrameWork/PublicHeader.h>
    
    #import <AlertShowFrameWork/AlertShow.h>
    

    2. 个性化配置framework

    a. 设置framework支持最低配置的iOS系统版本号
    b. 根据需求选择性添加armv7s
    Xcode6之后,默认不支持armv7s,如果需要添加FrameWork的工程是支持armv7s,那将会有冲突
    c. 'Mach-O Type' 设置为 'Static Library'
    FrameWork对于用户生成的一定是静态库
    d. Build Active Architecture Only属性

    这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本。
    而设置为no时,会编译所有的版本。
    编译出的版本是向下兼容的,比如你设置此值为yes,用iphone4编译出来的是armv7版本的,iphone5也可以运行,但是armv6的设备就不能运行。

    所以,一般debug的时候可以选择设置为yes,release的时候要改为no,以适应不同设备。
    e. 其他属性

    其他博客里面大都提到要在BuildSetting修改Dead Code Stripping、Link with Standard Libraries,但在Xcode7及以上版本后,不需要再把它们设置为NO

    Dead Code Stripping
    Dead Code Stripping设置为YES,也能够一定程度上对程序安装包进行优化,只是优化的效果一般,对于一些比较小的项目甚至没有什么优化体现,所以这里也就没有上测试数据。
    Dead Code Stripping 是对程序编译出的可执行二进制文件中没有被实际使用的代码进行Strip操作。对他有兴趣的可以点进去查看
    Link with Standard Libraries
    LINK_WITH_STANDARD_LIBRARIES = YES
    如果激活此设置,那么编译器在链接过程中会自动使用通过标准库的链接器。

    3. 生成framework

    首先把需要外放的文件添加到以下的位置


    分别通过command+b编译生成模拟器的包和真机
    在finder里面的两个文件夹内的内容都是一样的,可以通过终端把AlertShowFrameWork合并成一个

    在终端输入 lipo -create 第一个文件地址 第二个文件地址 -output 生成文件地址
    记得要给生成的文件命名为AlertShowFrameWork,方便后面替换,不命名的话会报错

    拿到生成的文件替换到刚Debug-iphone里面任意一个framework里面的AlertShowFrameWork,替换之后的

    可以复制到项目里面使用了。

    相关文章

      网友评论

        本文标题:iOS 封装framework

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