iOS开发你需要知道的

iOS 封装framework

2018-09-14  本文已影响73人  执着_7748

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,替换之后的

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

上一篇下一篇

猜你喜欢

热点阅读