我尝试的第一件事是创建一个静态库,但后来我发现它还没有得到支持.Apple Xcode Beta 4发行说明:
Xcode不支持构建包含Swift代码的静态库.(17181019)
我希望Apple能够在下一个Beta版本或GA版本中添加它,但我在他们的博客上阅读了以下内容:
虽然确保了应用程序的运行时兼容性,但Swift语言本身将继续发展,二进制接口也将发生变化.为了安全起见,应用程序的所有组件都应使用相同版本的Xcode和Swift编译器构建,以确保它们协同工作.
这意味着需要仔细管理框架.例如,如果您的项目使用框架与嵌入式扩展共享代码,您将需要一起构建框架,应用程序和扩展.依赖使用Swift的二进制框架是危险的 - 尤其是来自第三方的框架.随着Swift的变化,这些框架将与您的应用程序的其余部分不兼容.当二进制接口在一年或两年内稳定时,Swift运行时将成为主机操作系统的一部分,并且此限制将不再存在.
对于我为其他开发人员编写组件并将其包含在他们的应用程序中的人来说,这个消息真的让我感到震惊.这是否意味着我必须分发源代码或等待两年?有没有其他方法来分发库而不暴露代码(公司政策)?
更新:
Swift代码混淆在这一点上是一个选项吗?
ric*_*ter 20
Swift现在是测试版,即使对于1.0,Apple已经很清楚他们是在一个受限制的功能集之后 - 更好地完成少量事情而不是尝试做所有事情.
所以现在,没有办法分发二进制静态库.据推测,在Swift 1.0之后某个时候会发生变化.现在,你可以:
您也可以始终组合方法:例如,在ObjC中实现库的关键(秘密)细节,并运送Swift源代码,将其包装在一个漂亮的Swift API中.
用一种非常容易改变的语言编写的混淆代码听起来像是维护噩梦的秘诀.
我认为整个方法都是错误的.您不能通过您尝试使用的技术做一些尚未(尚未)可行的事情.
理由:Swift是一种新语言,目前处于测试阶段,因此正在发生变化.正如我所看到的,这个事实不仅意味着您无法发布静态库,而且(真正的)开发人员实际上不会使用第三方静态库.在下一版本的编译器中可能无法使用的库的实际用途是什么?如果您想使用多个库,问题会变得更大,因为它们可能不兼容!因此,即使您能够运送静态库,它们也不会对生产环境有用.那么,有什么意义呢?
建议:用Objective-C(或C或任何"非beta")编写静态库.需要第三方库(例如你的)的开发人员不应期望在Swift稳定之前用Swift编写它们.你不用实验材料建造真正的桥梁,对吗?你使用经过充分测试,可预测的.
| 归档时间: | 
 | 
| 查看次数: | 5630 次 | 
| 最近记录: |