2016-03-14 5 views
1

Я только что создал свой публичный репозиторий, чтобы построить на Travis. Это iOS-библиотека, которая также использует методы делегирования CoreBlueooth. Один из них выглядит следующим образом:iOS Построить на Travis CI Не удалось из-за метода делегирования CoreBluetooth

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

Когда он включен в код будет построен, он вызывает Travis сбой сборки из-за его ожидали «>» после NSDictionary<NSString * (предположительно, потому что он не любит указатель * знак внутри определения ключа NSDictionary). Однако это метод делегирования для CBCentralManager, поэтому он явно синтаксически корректен.

Это компилируется на моей машине, и когда конкретная реализация метода закомментирована, все работает нормально (включая другие методы делегирования CoreBluetooth). Это похоже на какую-то проблему синтаксиса, но компилирует на моем конце?

+0

Может ли ваш экземпляр Travis запускать другую версию инструментов Xcode? Некоторое время у нас была эта проблема, когда наши разработчики использовали Xcode 7.x, и наша машина для сборки застряла в 6.3; много нового кода автозавершения Xcode 7 просто пробил Xcode 6.3 (например, «_Nonnull»). – fullofsquirrels

+0

@fullofsquirrels ах ... видимо, по умолчанию это Xcode 6.1. Я попробую указать версию сейчас и дам вам знать! Спасибо за предложение. –

ответ

1

Выключает настройки по умолчанию для Travis CI OS X строит, чтобы использовать старую версию Xcode (Xcode 6.1) - как предложено @fullofsquirrels.

Это вызывает проблемы с более синтаксическим синтаксисом и в этом случае приводит к сбою сборки. Обновление файла .travis.yml указать версию для использования исправило проблему следующим образом:

osx_image: xcode7.2 

Надеется, что это помогает кто-то!