Swift插件架构
我正在寻找一种在
Swift中的插件架构中实现的方法.
用例 一个应用程序,fx. CLI,有一个文件夹,可以在其中放置插件,并在应用程序启动时加载. 要求 >能够定义插件的协议或协议集 我试过的 我已经使用Processto启动一个可执行文件,我也可以添加参数. 我遇到了这个可以完成的post,但是这需要使用NSBundle和Objective-C,所以这也没有用. 我真的不确定如何解决这个问题.任何帮助或指向正确的方向将不胜感激.
Swift目前没有稳定的ABI,所以你不能依赖原生接口. (预计这将由Swift 4解决.)
我现在可以想到两个选项,但两者都依赖于在主机和插件之间定义某种通信协议.如果不能使用Objective-C,您还必须自己实现自己的要求(功能内省等). >降低到C ABI.对于您需要的每个函数,使用@convention(c)注释在Swift的被调用端实现它,并在调用者一侧在标题中声明它以进行外部链接.您将无法实现两次函数,因此您应该定义一个基于回调的API,插件将自己注册到该API中. 我个人更喜欢选项2,因为它不需要与链接器混合等等,并且您可以为插件的使用定义Swift类型和函数.此外,由于插件是分叉子,它可能会崩溃而不会影响主机. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |