如果你是IOS的新手,并有.net开发的背景(就像我一样),你可能到处去找,哪里有dll呢?

其实,IOS平台是使用框架而不是dll,框架里面包含公共头文件和二进制文件。很不幸,XCode并不支持你自己去创建框架。

对于一个开发人员,这是个大问题,b/c缺少框架,我们就不得不去创建一个静态库文件。但是使用lib文件是一件痛苦的事情。实质上,向工程添加库的引用,并告诉功能工程在哪里可以找到你的头文件,这对于用户体验并非一件好事

所以我们应该如何突破这个限制呢?

在查阅过大量的资料之后,我发现在gitHub上有一个非常惊人的开源项目:iOS-Universal-Framework. 这个工程基本上是一个项目模板。你只需安装这个项目,现在你就多了一个新选择来创建项目。

现在,让我们讨论安装过程还有如何使用它:

  1. 下载zip文件.
  2. 保证你放在一个地方,并方便日后使用。B/C工程模板,每次你更新XCode的时候,你都需要重新安装这个项目模板(不要担心,安装过程非常的快)。
  3. 确保XCode已完全关闭
  4. 解压缩zip文件并转到文件夹:Real Framework/install.sh(如果不行,你还要运行Fake Framework/install.sh)
  5. 如果你熟悉使用命令终端,只需运行install.sh。如果你不熟悉,那么只需把它改名为 install.sh.command 并双击运行它。
  6. 当它开始运行,它会询问你:XCode安装在哪里。如果你没有修改过默认XCODE的安装路径,只需回车确认。
  7. 然后它会再询问你,需要安装在什么地方。只需敲入y并回车。
  8. 输入密码,回车
  9. 等待安装结束
  10. 打开Xcode并打开New Project窗口。
  11. 在IOS选择框架和库的地方,你会发现多了一个选择“Static iOS Framework”
 

现在,你有了一个全新的框架!但是,你应该如何使用它?

你基本上可以把它当做一个普通工程。但是,当你需要创建公共的API的时候,你需要告诉它。

现在让我们一步一步创建一个框架,发布你的公共API,并使用它!

  1. 使用new project对话框创建你的框架
  2. 你现在创建了一个空白的项目。现在我们添加一个新的类。在这个例子中,我们添加一个UIView的类,名字叫做MyView.
  3. 现在,我需要这个API供使用这个框架的开发者能正常使用,我需要让.h文件变为公共。点击项目导航器的项目,并选择build phase:

当你点击扩展Copy Header面板,你会看到3个选项,Public, Private和 Project。默认设置的话,当你添加一个新的文件,它会在project中可见。当你需要把它改变为public,只需把头文件拖到public面板中。

4. 让我们在class中输入一些代码:

01 @implementation MyView
02 -(id)init
03 {
04    self = [super init];
05    if(self)
06    {
07       self.backgroundColor = [UIColor orangeColor];
08    }
09    return self;
10 }
11 @end

我们把我们的View的默认背景颜色设为橙色

5. 现在下一步是可选的。但是我的观点是最好也配置一下。如果你使用Apple的默认框架的时候,你会发现import语句就像:#import UIKit/UIKit/.h  或者 #import  QuartzCore/QuartzCore.h 。这有个优点,就是你知道框架的名字,然后知道引用哪个头文件。这些头文件在框架中全部是public的API。所以你不需要添加一堆头文件。

所以让我们按如下步骤来做。

第一,打开 Add New File对话框,并添加头文件:

为头文件命名(跟框架的名字一样),在头文件里面,加入#import语句,添加你的框架中所有的公共头文件。

现在,不要忘记了在Build Phase面板它把变为PUBLIC!!!(步骤3)

6. 编译项目,现在就可以使用它了。

7.  创建一个新工程,对于这个例子我们就创建一个简单的View应用,叫做MyApp.

8. 当项目创建后,点击项目面板,并下拉到"Linked Frameworks and Libraries Section",并点击加号按钮:

现在点击“Add Other”按钮跳至你的框架页面:

是时候写些代码了!

9. 首先打开ViewController.m文件,写入你的代码:

10. 运行你的项目,你就会看到如下画面:

你现在就完成了一个框架,可以在不同的项目和组之间共享这个框架了!

我希望这篇文章对你来说是有用的。

ios中创建自己的框架的更多相关文章

  1. 在iOS中创建静态库

    如果您有不错的原创或译文,欢迎提交给我们,更欢迎其他朋友加入我们的翻译小组(联系qq:2408167315).  =========================================== ...

  2. iOS中创建自定义的圆角按钮

    iOS中很多时候都需要用到指定风格的圆角按钮,尽管UIButton提供了一个方式创建圆角按钮: + (id)buttonWithType:(UIButtonType)buttonType;//指定bu ...

  3. ios中创建可以拖动的view原理和实现详解

    有时候我们会需要在界面上拖动view;uiview是继承于uiresponder的,所以可以响应触摸相关的事件. 重点是以下一组方法: - (void)touchesBegan:(NSSet *)to ...

  4. iOS中的主要框架framework

    在日常的iOS项目开发中,主要使用的就是Foundation和UIKit这两个框架. (一)Foundation框架 Foundation是对Core Foundation框架的一个封装,使用Foun ...

  5. iOS中的地图和定位

    文章摘自http://www.cnblogs.com/kenshincui/p/4125570.html#location  如有侵权,请联系删除. 概览 现在很多社交.电商.团购应用都引入了地图和定 ...

  6. ios中框架介绍

    ios中框架介绍 参考博客: 参考文章:框架介绍 框架介绍 框架就是一个目录,一个目录包含了共享库,访问共享库里面的代码的头文件,和其他的图片和声音的资源文件.一个共享库定义的方法和函数可以被应用程序 ...

  7. iOS 10 中引入了 Message 框架

    WWDC 2016 上最重磅的消息之一就是在 iOS 10 中引入了 Message 框架.开发者现在可以为苹果内置的 Messages 应用开发扩展啦.通过开发一个应用扩展,你可以让用户跟应用在 M ...

  8. 在iOS 4中创建一个LDGradientView样式的渐变视图

    本教程将演示如何在 Swift 4 中创建一个多功能的.@IBDesignable 样式的渐变视图类.你可以将 CAGradientView 放到 storyboard 中,并在设计时预览,或者以编程 ...

  9. Quartz 2D在ios中的使用简述二:创建画布

    在iOS中使用Quartz画图时,第一步就是要获取画布(图形上下文),然后再画布上做各种操作.先看下CoreGraphics.h这个头文件,就可以知道能够创建多少种上下文类型. #include &l ...

随机推荐

  1. Java系列: 如何在Eclipse中安装Memory Analyzer插件

    一.找到eclipse的插件安装对话框: help->install new software ->work with 二.输入Memory Analyzer的安装路径 具体可以到http ...

  2. 【cocos2dx中Node类getParent和getChildByTag()】学习体会

    參考http://cn.cocos2d-x.org/doc/cocos2d-x-3.0/d3/d82/classcocos2d_1_1_node.html 当中和child.parent有关的成员函数 ...

  3. 【Spark】SparkStreaming-输出到Kafka

    SparkStreaming-输出到Kafka sparkstreaming output kafka_百度搜索 SparkStreaming采用直连方式(Direct Approach)获取Kafk ...

  4. 【Scala】Scala-None-null引发的血案

    Scala-None-null引发的血案 Overview - Spark 2.2.0 Documentation Spark Streaming - Spark 2.2.0 Documentatio ...

  5. css的overflow属性

    原文:https://www.jianshu.com/p/67b536fc67c1 ------------------------------------------- 事实上我挺长一段时间都没弄清 ...

  6. Spring中默认bean名称的生成策略/方式修改

    最近公司项目打算模块化,其实一个原因也是为了能够整合公司多个业务的代码,比如一个资源xxx,两个业务中都有对这个资源的管理,虽然是一个资源,但是是完全不同的定义.完全不同的表.不同的处理逻辑.所以打算 ...

  7. LabVIEW上位机与串口通信

    渊源 大一的时候,学校开了门公共选修课,叫LabVIEW编程,当时的我当然还不知道LabVIEW是啥东东,但还是选了.上课的老师是机械学院的一个副教授.他给我们展示了好几个用LabVIEW做的项目.譬 ...

  8. 【视频教学】如何利用高德地图IOS SDK进行开发?

    Step1:使用IOS SDK可以做什么高德地图 iOS SDK 是一套基于 iOS 5.1.1 及以上版本的地图应用程序开发接口.通过该接口,用户可使用高德地图数据和服务轻松构建功能丰富.交互性强的 ...

  9. jquery ready方法实现原理

    先看这两句代码: window.addEventListener('load',loaded,false); document.addEventListener('DOMContentLoaded', ...

  10. 微软BI 之SSRS 系列 - 在 Cube 中通过 MDX 查询实现基于父子递归关系的汇总报表

    之前我写了一篇在 SSRS 开发中处理这种父子关系的汇总与聚合的文章 (SSRS 系列 - 使用分组 Group 属性实现基于父子递归关系的汇总报表),示例中的查询是基于 SQL Server 关系型 ...