如何创建一个纯 Swift 模块

 我来答
就烦条0o
2017-02-11 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
苹果提供了一种机制通过框架来分发代码,所以使用ObjC和Swift代码来自定义一个框架库是非常简单的(对于iOS也一样)。接下来创建一个纯的Swift模块,就像苹果创建的Swift标准库和Cocoa/Cocoa Touch桥接库。
现在我们来创建一个简单的叫Logger的Swift模块,它只有一个方法:log。这个Swift模块至少要包含三个文件,文件列表如下:
Logger.swiftmodule - 公共接口的定义文件
Logger.swiftdoc - 文档文件
libLogger.a - 编译后的库文件(可能是一个动态库,这取决于你的工程任务)
我们现在开始创建一个Logger的库:
下面将使用"> "前缀来实例化这个Logger对象,并记录一些日志:
现在来创建libLooger.a文件,命令如下:
xcrun swift -emit-library -emit-object Logger.swift -sdk $(xcrun --show-sdk-path --sdk macosx) -module-name Logger
ar rcs libLogger.a Logger.o

-emit-library表示生成动态链接共享库,而使用-emit-object不仅会生成文件还会生成包含main方法,所以你会得到一个”Duplicate Symbol“的链接错误。
解决方法很简单:执行时,同时加入-emit-object和-emit-library两个参数,就像上面描述的命名一样。
接下来创建Logger.swiftdoc和Logger.swiftmoudle:
xcrun swift -emit-module Logger.swift -sdk $(xcrun --show-sdk-path --sdk macosx) -module-name Logger

至此我们有了一个完整的模块,可以添加到一个真实地工程里面了。创建一个简单地Swift的工程,添加下面的这些文件:
然后设置Swift的"Import paths"配置:
为了使你工程正常运行,你还需要导入刚创建的Logger模块:
程序成功运行
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式