【问题标题】:Swift Bridging header expected ';' after method prototypeSwift 桥接头应为 ';'方法原型之后
【发布时间】:2014-08-03 10:36:55
【问题描述】:

我创建了一个新的 Swift 项目,并决定利用 XCode 的“Bridging Header”功能来使用多个 Objective-C 文件。

一切都很好,除了一个特定的标头,当包含在桥接中时,会抛出:

<unknown>:0: error: something/include/SomeClass.h:269: expected ';' after method prototype

查看该行,代码看起来像:

-(void) searchField:(NSString*) searchField
         notBetween:(NSNumber*) number1
                and:(NSNumber*) number2;

如果我将单词 and 更改为其他任何内容 (qwerty),编译错误就会消失! 相同的代码适用于 Objective-C 项目。

想法?

【问题讨论】:

  • 我想知道它是否正在尝试对参数名称进行一些巧妙的自动翻译,例如“andNumber”等,并且因为在去除“and”后没有留下任何名称而落在其背面?我知道它会做一些聪明的事情,比如在翻译初始化程序时从 initWithWhatever 中去掉“with”。是否有桥接头转换器的文档?

标签: objective-c xcode swift


【解决方案1】:

and 是一个 C(++) 宏,定义在 中。

您不应在 Swift 外部导出的 Swift 代码中使用 C/C++/Objective-C 关键字和宏名称。这是与 C 系列交互时大多数语言的经验法则。

【讨论】:

  • 这不是 Swift 代码。它是导入 Swift 项目的 ObjC 代码。这种方法在纯 ObjC 项目中工作有意义吗?
  • 哦。好吧,在助手编辑器中,选择“预处理”,看看你的方法。它看起来怎么样?
  • “无助理结果” - 请记住,如果重要,这是一个 .h 文件,我没有 .m。源代码在二进制库中关闭。
【解决方案2】:

这是一个错误,已在 Beta 5 中修复。

http://openradar.appspot.com/17110619

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 2017-06-21
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 2014-07-31
    相关资源
    最近更新 更多