ios - 由于 "Elaborated type refers to a typedef"错误,Project-Swift.h 文件编译失败

标签 ios xcode8 ios10

总结: 我已将 StreamDelegate 方法 public func stream(_ aStream: Stream, handle eventCode: Stream.Event) 添加到我的 swift 类并编译了项目。生成 Project-Swift.h 时,编译器无法编译并显示错误,因为 Elaborated type refers to a typedef

重现步骤: 1. 将 StreamDelegate 添加到您的 swift 类中。 2. 将 public func stream(_ aStream: Stream, handle eventCode: Stream.Event) 添加到您的类中。 3. 编译工程。

预期结果: Project-Swift.h 文件应该被正确编译。

实际结果: Project-Swift.h 文件中的错误:- (void)stream:(NSStream * _Nonnull)aStream handleEvent:(enum NSStreamEvent)eventCode;

临时修复: 如果我删除 Project-Swift.h 上的 enum 关键字,例如 - (void)stream:(NSStream * _Nonnull)aStream handleEvent:(enum NSStreamEvent) eventCode;,项目编译正常,构建成功。

iOS 版本:iOS 10 beta 1 Xcode 版本:Xcode 8 beta Swift 版本:2.3 或 3.0

最佳答案

我通过在 func stream(_ aStream: Stream, handle eventCode: Stream.Event) 前面添加 @nonobjc 关键字找到了避免上述错误的解决方法 在我的 Swift 类(class)中。这样编译器就不会将该方法包含在 Project-Swift.h 文件中,并且在编译时 Project-Swift.h 中没有错误。

@nonobjc public func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
    //Other stuffs
}

我认为这不是上述问题的正确解决方案。但对我来说,我不想从我的 Objective-C 类中调用上述委托(delegate)方法。

谢谢!

关于ios - 由于 "Elaborated type refers to a typedef"错误,Project-Swift.h 文件编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38187465/

相关文章:

ios-simulator - 在哪里可以下载 iOS 10 模拟器运行时文件?

migration - swift : Unable to infer complex closure type with NSFetchedResultsController

ios - 传输安全已阻止明文 HTTP

ios - 我应该 removeBehavior 还是 UIPushBehavior——我添加了很多推送

iOS 测试时出错

android - 一个 facebook 应用程序用于多个 android 应用程序

swift - 既然 Xcode 9 已经发布,我可以从 Xcode 8.3.3 提交和部署应用程序而不更新到 Xcode 9 吗?

iphone - 核心数据 - 对作为关系的一部分获取的记录进行排序

ios - 测试驱动上传方法?

ios - CLLocationManager 委托(delegate)方法没有被调用(谷歌地图已集成)