构建纯Swift可可触摸框架
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建纯Swift可可触摸框架相关的知识,希望对你有一定的参考价值。
我正在使用Xcode-6探索Swift,到目前为止一直都很好,尽管我认为新的集合需要一些工作,因为我已经设法打破了编译器几次。
问题是我现在卡住尝试创建框架包然后在另一个项目中使用。项目构建没有问题,所有测试都成功通过。当我去创建Archive(我假设是必需的)时,我收到错误:
:0:错误:未找到基础Objective-C模块“Sample”
现在我假设这与我的Sample.h的内容有关,它告诉我
// In this header, you should import all the public headers of your framework using statements like #import <Sample/PublicHeader.h>
这很好,除了我只使用了swift枚举,结构和类这个框架,因此没有.h文件存在。
任何人都可以对这一点有所了解,因为我找不到任何文件吗?
编辑(7/27/2018)
以下答案中的信息可能不再准确。你的旅费可能会改变。
我和一位工程师坐下来问了这个确切的问题。这是他们的回应:
Xcode 6目前不支持构建可分发的Swift框架,并且Apple可能不会将此功能构建到Xcode中,直到它们有利于它们这样做。现在,Frameworks旨在嵌入您的应用程序的项目中,而不是分布式。如果您观看任何会话视频或查看示例项目,这始终是安排。 Another reason is that Swift is very new and likely to change. Thus your Swift-based framework is not guaranteed to work on the platform you originally built it on.
稍微更新
工程师提到,制作分发框架并非不可能,只是它不受支持。
我可以通过转到框架的目标并在Headers下的Build Phases选项卡上删除MyFramework.h文件来解决错误
然而,当我使用框架在包含应用程序和应用程序扩展之间共享代码时,我得到了“找不到底层Objective-C模块”错误,这两者都是纯粹的Swift。
你可能会觉得这很有用:Creation of pure swift module
简而言之:可以创建静态框架,但是有一个问题:如果包含“ProjectName-Swift.h”标题,它在最终用户的项目中不起作用。
但是,如果你只使用swift,它的工作正常。
假设您正在创建一个真正纯粹的Swift模块,您必须禁用Objective-C兼容性标头和任何生成的接口标头,以便编译器不会因为它可以为框架找到Objective-C模块而关闭。
不要删除您的公共框架标头。如果您这样做,您将在链接时获得模块映射警告。
我认为这是XCode 6中的一个错误,或者Apple在测试版中不允许从XCode归档Framework。
如果您编译成配置文件XCode正确生成框架。 (请参阅在DerivedData中创建的Release文件夹)
以上是关于构建纯Swift可可触摸框架的主要内容,如果未能解决你的问题,请参考以下文章
xcodebuild 命令无法与动态可可触摸框架一起正常工作