要点:
我已将StreamDelegate方法public func stream(_ aStream: Stream, handle eventCode: Stream.Event)
添加到我的swift类并编译了该项目。在生成Project-Swift.h
时,编译器无法编译并将错误显示为Elaborated type refers to a typedef
。
重现步骤:
1.将StreamDelegate
添加到您的快速课程中。
2.将公开func stream(_ aStream: Stream, handle eventCode: Stream.Event)
添加到您的班级。
3.编译项目。
预期结果:
Project-Swift.h
文件应该正确编译。
实际结果:
Project-Swift.h文件中的错误:- (void)stream:(NSStream * _Nonnull)aStream handleEvent:(enum NSStreamEvent)eventCode;
临时修复:
如果我在enum
上移除了Project-Swift.h
上的- (void)stream:(NSStream * _Nonnull)aStream handleEvent:(enum NSStreamEvent)eventCode;
关键字,那么项目就会正确编译并构建成功。
iOS版:iOS 10 beta 1
Xcode版本:Xcode 8 beta
Swift版本:2.3或3.0
答案 0 :(得分:1)
通过在我的Swift课程中@nonobjc
前面添加func stream(_ aStream: Stream, handle eventCode: Stream.Event)
关键字,我找到了解决上述错误的方法。因此编译器不在Project-Swift.h
文件中包含该方法,并且在编译时Project-Swift.h
中没有错误。
@nonobjc public func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
//Other stuffs
}
我认为这不是上述问题的正确解决方案。但对我来说,我不想从Objective-C类调用上面的委托方法。
谢谢!