协议中的 Typhoon 和 @objc 限制

Posted

技术标签:

【中文标题】协议中的 Typhoon 和 @objc 限制【英文标题】:Typhoon and @objc limitation in protocols 【发布时间】:2015-07-27 19:38:56 【问题描述】:

对象 C 不支持的协议和类型是否有官方解决方法

例如,我有一个返回反应式可可信号生成器的协议

public protocol PLoginService 

      func login(username:String,password:String) -> SignalProducer<Bool,NSError>

如果我在协议上使用@objc,那么我会得到Objective C不支持返回类型的编译器错误。我会有很多这样的构造,所以我想知道我可以按顺序做什么受益于台风魔法

【问题讨论】:

【参考方案1】:

当前版本的 Typhoon 是一个反射和动态依赖注入容器,因此依赖于完整的 Objective-C 运行时。这意味着,不幸的是,所有将通过 Typhoon 的协议都必须具有 @objc 指令。此外,Typhoon 注入的任何东西都必须是 Objective-C 兼容的类型。

我们目前正在对 Typhoon 的纯 Swift 版本进行研发,非常欢迎您在 Github 上参与该项目的开发。

【讨论】:

这些天我没有太多时间,但我想我可以提供帮助。我阅读了 wiki 中的贡献页面,但我不知道如何提供帮助

以上是关于协议中的 Typhoon 和 @objc 限制的主要内容,如果未能解决你的问题,请参考以下文章

我们可以限制安全通道协议 (SCP) 02 通信中的“安全级别”吗?

天蓝色中的 DocumentDB(通过 MongoDB 协议)集合大小限制

测试目标中的 Swift Typhoon 错误 - 不是 Typhoon Assembly 的子类

Swift 中的 ObjC 协议实现

如何找到哪个函数打开了套接字?

没有 objc 的协议中的 Swift 可选方法