总结:
我已将 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) 前面添加
在我的 Swift 类(class)中。这样编译器就不会将该方法包含在 @nonobjc
关键字找到了避免上述错误的解决方法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/