制作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中实现方法

 

然后在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>

然后定义对象 然后Bulid & Run 就ok了!

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

还有提醒:

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

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

类似

iOS 开发 Framework的更多相关文章

  1. iOS开发 .framework的Optional(弱引用)和Required(强引用)区别, 有错误 Library not found………………

    http://www.cnblogs.com/wanyakun/p/3494323.html 强引用(Required)的framework是一定会被加载到内存的,但是弱引用(Optional)的fr ...

  2. iOS开发 .framework的Optional(弱引用)和Required(强引用)区别

    首先,参考文档:https://blog.stackmob.com/2013/03/objective-c-tip-of-the-month-optional-frameworks/ 强引用(Requ ...

  3. iOS开发中静态库之".framework静态库"的制作及使用篇

    iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...

  4. iOS开发——创建你自己的Framework

    如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件.然而,这种方法并不是很优雅.它会暴露所有的实现细节,而这些实现你可能并不想开源出来.此外,开发者也可能并不想看到你的所有代码,因为他们可 ...

  5. iOS开发之静态库(五)—— 图片、界面xib等资源文件封装到静态框架framework

    编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 由于bundle是静态的,所以可以将 ...

  6. iOS开发之静态库(四)—— 静态框架framework制作

    前面介绍过,虽然苹果公司禁止在iOS开发中使用动态库,而且也从XCode中移除了创建静态框架的功能,但我们还是可以通过对XCode进行小小的改动来创建静态框架. 编译环境:Macbook Air + ...

  7. 在iOS开发中,给项目添加新的.framework

    首先需要了解一下iOS中静态库和动态库.framework的概念 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我 ...

  8. 如何在IOS开发中在自己的framework中添加.bunble文件

    今天就跟大家介绍一下有关,如何在IOS开发中在自己的framework中添加.bunble文件,该文章我已经在IOS教程网(http://ios.662p.com)发布过来,个人觉得还是对大家有帮助的 ...

  9. iOS 开发 ZFUI framework控件,使布局更简单

    来自:http://www.jianshu.com/p/bcf86b170d9c 前言 为什么会写这个?因为在iOS开发中,界面的布局一直没有Android布局有那么多的方法和优势,我个人开发都是纯代 ...

随机推荐

  1. python 元组列表转为字典

    #create a list l = [(), (), (), (), (), ()] d = {} for a, b in l: d.setdefault(a, []).append(b) prin ...

  2. 解决“centos 下bash: g++: 未找到命令...”

    简单测试一个C++的“Hello World”,发现报错:“bash: g++: 未找到命令...”,因为没有安装编译器G++:然后就百度,出现一大堆的解决办法,什么“sudo apt-get ins ...

  3. 团队作业7—团队项目设计完善&编码测试

    一.根据OOD详细设计工作要点,修改完善团队项目系统设计说明书和详细设计说明. <软件设计方案说明书>Github仓库地址:https://github.com/RNTF6/web 完善内 ...

  4. c++ primer plus 第三章 课后题答案

    #include<iostream> using namespace std; int main() { ; int shen_gao; cout <<"Please ...

  5. Linux服务器上监控网络带宽的18个常用命令和工具

    一.如何查看CentOS的网络带宽出口 检查维护系统的时候,经常会要查看服务器的网络端口是多大的,所以需要用到Linux的一个命令. 如何查看CentOS的网络带宽出口多大?可以用下面的命令来查看. ...

  6. Java IO流-File类

    2017-10-24 23:50:22 File类 File类:文件和目录路径名的抽象表示形式.该文件或者目录不一定真实存在. * 构造方法 File类有四种构造方法,主要采用的构造方法师第二种,也就 ...

  7. OnXXX函数与XXX事件的关系

    OnPaint是Control类中的方法,Paint是事件,Paint是用于改变部分显示用比较合适,实际上Paint事件在OnPaint中被调用,如果你重写OnPaint但是不调用base.OnPai ...

  8. Andriod的Http请求获取Cookie信息并同步保存,使第二次不用登录也可查看个人信息

    Android使用Http请求登录,则通过登录成功获取Cookie信息并同步,可以是下一次不用登录也可以查看到个人信息, 注:如果初始化加载登录,可通过缓存Cookie信息来验证是否要加载登录界面.C ...

  9. 『cs231n』卷积神经网络工程实践技巧_上

    概述 数据增强 思路:在训练的时候引入干扰,在测试的时候避免干扰. 翻转图片增强数据. 随机裁切图片后调整大小用于训练,测试时先图像金字塔制作不同尺寸,然后对每个尺寸在固定位置裁切固定大小进入训练,最 ...

  10. ural Ambitious Experiment 树状数组

    During several decades, scientists from planet Nibiru are working to create an engine that would all ...