所以我正在深入研究XCTest的单元测试,并遇到了一些问题.
当我用内部的简写数组声明和方法调用编写XCTAssert语句时,Xcode中出现语法错误:
XCTAssert([self hasStrings:@[ @"foo", @"bar" ]]);
在Xcode中编译错误:
Expected identifier or '('
但是,如果我在表达式周围添加更多括号,它将起作用:
XCTAssert(([self hasStrings:@[ @"foo", @"bar" ]]));
这是否与我的一些语法无法传递到宏有关?(假设XCTAssert是一个宏)
XCTAssert
是一个带有可变参数列表的宏:
#define XCTAssert(expression, format...) \ _XCTPrimitiveAssertTrue(expression, ## format)
在您的第一个表单中,预处理器解释
[self hasStrings:@[ @"foo", @"bar" ]]
作为两个宏参数,用逗号分隔.