所以我正在使用 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" ]]
作为两个宏参数,用逗号分隔。
关于objective-c - 数组速记表达式和方法调用的 XCTAssert 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20691305/