我可以使用Xcode 7轻量级语法并仍支持Travis吗?

时间:2016-01-30 03:16:53

标签: objective-c xcode xcode7 travis-ci

我想使用Xcode 7.0轻量级语法:

NSArray<NSDictionary<NSString *, NSString *> *> *fooList;

但Travis只支持Xcode 6.1:https://docs.travis-ci.com/user/osx-ci-environment/

使用Xcode 6为Travis构建时,有没有办法忽略尖括号?

[编辑:问题不相关:Travis supports Xcode 7 ]

1 个答案:

答案 0 :(得分:2)

较新版本的Objective-C中的轻量级泛型语法需要在Xcode 6中找不到更新版本的编译器。

因此,在使用Xcode 6时,没有简单的方法可以编译这样的语法。

你唯一的选择就是可怕的代码,例如:

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
    NSArray *fooList;
#else
    NSArray<NSDictionary<NSString *, NSString *> *> *fooList;
#endif

毋庸置疑,这远非一个好主意。

但是你有一个更大的问题。尝试使用Xcode 6进行应用程序的持续集成构建,你真的想用Xcode 7构建它是一个坏主意。您最终无法构建或测试正确的代码。您甚至无法支持正确的API或iOS版本。

更好的解决方案是使用支持最新版Xcode和相关SDK / API的CI工具。