史上最完整的iOS DIY framework 详细教程(二)

制作Framework 的好处和缺点

好处:

      1、如果模块间接口定义的比较完善,模块化的程序具有很好的可扩展性与内聚性;

      2、物理上的模块化便于开发过程的管理与测试,尤其是在程序规模相对大。

      3、如果可以使用胶水语言作为粘合剂,程序可以用很少的代价适应未来的变化。

      4、可以在物理上实现 iOS 程序的模块化。

不足:

      1、由于是静态库,应该不会有什么运行时的损失,但是没试验过,不确定。

      2、资源的加载这部分,不知道会不会占用更多内存,没试验,不确定。

 在项目开发中,共享代码是很常见的。由于iOS的限制,我们无法以动态库的形式共享代码。除了以源代码方式,我们只能选择静态库来共享代码。

    “真框架项目以编译后的二进制形式共享代码,本质上还是一种静态库。但由于Xcode的限制(没有提供相应的项目模板),要以框架的形式编译出静态库,仍然十分麻烦。

  这是手工制作 Framework 的方法,网上有人制作了工程模版,可以直接生成 Framework 工程:

    先下载框架:https://github.com/kstenerud/iOS-Universal-Framework

   解压找到RealFramework进入找到install.sh,右键选择打开方式,用终端打开,真的FrameWork就加入Xcode了



打开进入shell


打开进入ctrl+c ,然后 enter


然后输入y


输入你机子的密码:然后回车


最终提示installation complete 。please restart  Xcode 。恭喜你成功了。

然后打开xcode 新建一个Framework

然后 新建一个TestFramework,然后新建一个myTestClass的类



然后在myTestClass.h中添加方法

-(void)testFunction;

然后在myTestClass.m中实现方法

#import "myTestClass.h"

@implementation myTestClass
-(void)testFunction{
    UIAlertView *myAlert=[[UIAlertView alloc] initWithTitle:@"哈哈!这个是我自己的FrameWork"
                                                    message:@"成功了"
                                                   delegate:self
                                          cancelButtonTitle:@"取消"
                                          otherButtonTitles:nil, nil];
    [myAlert show];
    [myAlert release];

}
@end
然后在bulid phases中的copy headers 中添加想要的头文件到public


将myTestClass.h移动到public中


然后bulid & run,ok了!哈哈!

 接下来就是使用了,直接把上面生成的Build->Products->Debug-iphonesimulator->TestFrameWork.embeddedframework拖到你要使用的工程中


接下来是将TestFrameWork.framework添加到Link Binary With Libraries,可以直接从项目的左侧栏拖进这个区域。


然后就在你要使用的类里面进入头文件 ,

#import  <TestFrameWork/myTestClass.h>

然后定义对象

 myTestClass* vc1=[[myTestClass alloc]init];
    [vc1 testFunction];
    [vc1 release];
然后Bulid & Run 就ok了!



  恭喜你 第二种方法也会了哈哈!

还有提醒:

2。在制作framework或者lib的时候,如果使用了category ,则使用该FMWK的程序运行时会crash,此时需要在该工程中 other linker flags 添加两个参数  -ObjC -all_load

3。编译出Framework是,需要把 GenerateDebugSymbols =NO,否则会出现很多 warning:

类似

warning: (armv6) /Users/myuser/Library/Developer/Xcode/DerivedData....build/Objects-normal/armv6/ImageRequest.o unable to open object file


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值