1

我刚刚建立了我的公共存储库以在 Travis 上构建。它是一个 iOS 库,也使用了 CoreBlueooth 的委托方法。其中一个看起来像这样:

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI

当它被包含在要构建的代码中时,它会导致 Travis 构建失败,因为它期待一个 '>' 之后NSDictionary<NSString *(假设是因为它不喜欢*NSDictionary 键定义中的指针符号)。但是,这是 的委托方法CBCentralManager,因此在语法上显然是正确的。

这在我的机器上编译得很好,当特定的方法实现被注释掉时,一切都运行良好(包括其他 CoreBluetooth 委托方法)。这看起来像是某种语法问题,但最终编译得很好?

4

1 回答 1

1

原来 Travis CI 默认 OS X 构建使用旧的 Xcode 版本(Xcode 6.1) - 正如@fullofsquirrels 所建议的那样。

这会导致新语法出现问题,并在这种情况下导致构建失败。更新.travis.yml文件以指定要使用的版本修复了该问题,如下所示:

osx_image: xcode7.2

希望这对某人有帮助!

于 2016-03-15T15:46:00.027 回答