iOS 8已经开放了动态库的权限。创建动态库并能运用到兼容iOS7的项目中!

Carthage&CocoaPods 0.36对Swift也仅以 Framework 的方式来支持。 更多参见:Library vs Framework in iOS

  • Swift 不在支持静态库,这也就间接放弃了 iOS 7。
  • Framework 就是一个Bundle,将所有的资源(nib,Images,Fonts…)和代码都打包在一起,方便发布。理论上动态库可以单独更新,只是在iOS 上Apple未开放这样的权限。

创建Framework项目

Coding the Framework

Access levels

Framework 中 Coding 唯一要注意的就是代码的访问权限Access Controller。这跟写单独应用的不用关心相反,你要时刻注意哪些类、变量、方法是需要对外开放的,哪些是私有的。

  • Public: accessible everywhere
  • Internal (默认): accessible within any source file from the defining module,but not outside of that module
  • Private: accessible only within its own defining source file

资源打包

如何将资源打包到Framework中。

集成 Framework

在应用项目中,想要集成Framework,有多种方法:

  1. 将Framework项目作为SubProject加入当前项目。
  2. 将生成好的 Framework,拖入项目

copy the framework during build

Framework 不会被默认打包到项目中,需要在 Build 时 copy。Cathage 见:Copy Framework

  • 点击+创建New copy Files Phase项目
  • 设置 Destination 为 Frameworks
  • 点击+然后选择要copy的 framework
  • 使用 Framework

    Framework 在Swift中被隐式定义为了模块,使用时,只要引用该模块(也就是Framework)的名字,即可

    import MyFramework

    可以将swift的framework添加为项目的子项目,也可以直接引用项目生成的framework文件

    最后一点很重要:

    有一点和oc的framework不同,这里需要在target ->General ->Embedded Binaries 中添加这个framework,添加成功后会自动在Linked Framework and Libraries中自动添加这个framework,如果只在Linked Framework and Libraries中添加这个framework会导致库无法载入(OC创建的framework应该是正常的),项目无法运行

    Swift 创建framework并应用到项目中的更多相关文章

    1. ios – 黑客入侵MFMessageComposeViewController

      2)如何找出实际的messageSend方法及其实现的类?

    2. ios – 在设备上构建和运行时,仅将嵌入式框架与其他动态框架链接失败

      TL;博士将您的嵌入式框架与其他框架链接,并且不将其他框架与您的应用程序链接,导致Build&在设备上运行.描述:建立:我的设置非常简单(Swift2.3&XcodeXcode8.0;Build版本8S162m):>使用Carthage(0.17.2)我用xcodebuild8.0和TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3carthagebui

    3. ios – Xcode 7.1 PrototypeTools链接器错误(仅限模拟器)

      我正在尝试使用Xcode7.1在iOS模拟器中运行我的应用程序,但我收到链接器错误.这是错误:clang:错误:链接器命令失败,退出代码为1这似乎是一个新问题,因为我在升级到新的Xcode之前没有它.我在Google上搜索过,但是这个问题几乎没有相关主题.有趣的是,该应用程序在设备上运行良好.我已经尝试重置模拟器并再次清洁/建造,但两者都没有奏效.有没有其他人遇到过这个问题,你能提供什么建议吗?

    4. ios – iPhone崩溃日志不能正确地符号化并且是双重间隔的

      任何建议超过欢迎.谢谢.解决方法当这件事发生在我身上时,它只是我通过电子邮件收到的日志.如果我记得,至少有一些是在.msg文件中,我不得不把它们拿出来.它可能是Exchange编码更改.如果你显示不可见的字符,你可能会看到每个字符之间的东西.您可以找到并替换它们以删除它们或更改编辑器中的编码.

    5. 如何使用iOS上的BluetoothManager.framework私有API发送和接收数据

      这些天我正在开展一个项目,我们需要将非MFI蓝牙设备连接到iPhone,并且该设备不支持成为BLE外围设备客户端,因此我们必须在经典蓝牙上执行此操作.我设法使用BluetoothManager.framework与demoprojectBeeTee的指南配对并将设备连接到iPhone但我不知道如何发送和recv数据,我在类转储标头中找不到API.似乎答案在于这三个结构:BTAccessoryMan

    6. ios – 如何存档包含自定义框架的应用程序?

      我有一个我创建的xcode框架项目,我可以编译成一个myframework.framework文件.编译之后,我将这个框架拖到我应用程序的Frameworks项目文件夹中,然后利用框架中的类,将适当的import语句添加到需要它的任何类;这允许我的应用程序成功编译与在框架中定义的类的引用.要使应用程序成功部署到我的设备,我还将我的自定义框架添加到我的目标的“嵌入式二进制文件”部分.有了这一切,我可

    7. ios – Xcode无法找到strip-frameworks.sh目录

      谢谢!

    8. ios – Iphone / Ipad在缩放时崩溃

      i=hUb1GHJ6有没有人有什么可能出错的线索?解决方法我们正在做很多调试,我们终于找到了一个解决方案.我们有一个“跳过导航”链接,只有在您的键盘上按“标签”时才显示.这最初设置为“text-indent:-10000px”.这可能导致视口宽度超过10000像素,然后导致手机使用太多内存,然后最终崩溃.我们已经通过删除这个CSS规则来解决这个问题,所以blush.no不会崩溃那么多了.Iphone仍然有内存泄漏的问题,直到他们解决这个问题,网站有时会崩溃,但不会像以前那样接近.

    9. 在客户端获取iOS Universal Framework的版本号

      这可能不限于iOSUniversalFrameworks,而是所有xxx.framework文件.然而,我似乎找不到如何获取当前版本和客户端应用程序中构建框架的文档.在一个应用程序中,您可以使用以下内容:这将为您提供存储在应用程序的Info.plist中的当前信息.但是我们如何找到一个框架的信息.在我的情况下,具体是嵌入式框架.解决方法我发现苹果在Xcode6中支持的新的CocoaTouch框架为

    10. xcode – 如何正确设置运行路径,搜索路径和安装名称?

      任何人对我可能做错了什么有什么想法?

    随机推荐

    1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

      下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

    2. swift UISlider,UIStepper

      我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

    3. preferredFontForTextStyle字体设置之更改

      即:

    4. Swift没有异常处理,遇到功能性错误怎么办?

      本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

    5. 字典实战和UIKit初探

      ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

    6. swift语言IOS8开发战记21 Core Data2

      上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

    7. swift语言IOS8开发战记22 Core Data3

      上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

    8. swift实战小程序1天气预报

      在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

    9. 【iOS学习01】swift ? and !  的学习

      如果不初始化就会报错。

    10. swift语言IOS8开发战记23 Core Data4

      接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

    返回
    顶部