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,有多种方法:
- 将Framework项目作为SubProject加入当前项目。
- 将生成好的 Framework,拖入项目
Copy the framework during build
Framework 不会被默认打包到项目中,需要在 Build 时 Copy。Cathage 见:Copy Framework
+
创建New Copy Files Phase
项目+
然后选择要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应该是正常的),项目无法运行