1

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

重现步骤: 1. 添加StreamDelegate到您的 swift 类。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关键字 onProject-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

4

1 回答 1

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 类中调用上述委托方法。

谢谢!

于 2016-07-07T07:30:22.660 回答