gpt4 book ai didi

ios - 为什么将 NSString 对象传递给 XCTAssertTrue 的 "format"参数会导致构建错误?

转载 作者:IT王子 更新时间:2023-10-29 08:03:29 25 4
gpt4 key购买 nike

在尝试使用 XCTest 测试我的应用程序时,我在执行以下操作时遇到构建错误:

#import <XCTest/XCTest.h>

@interface MyTests : XCTestCase

@end

@implementation MyTests

- (void)testExample
{
NSString *str = @"foo";
XCTAssertTrue(YES, str); // Parse issue: Expected ')'
}

@end

但如果我这样做,我不会得到构建错误:

#import <XCTest/XCTest.h>

@interface MyTests : XCTestCase

@end

@implementation MyTests

- (void)testExample
{
XCTAssertTrue(YES, @"foo"); // this is just fine...
}

@end

我得到的构建错误是:

Parse issue: Expected ')' 

它在“str”中的“s”下方放置了一个箭头。

我发现我可以通过改变来解决这个问题

XCTAssertTrue(YES, str)

XCTAssertTrue(YES, @"%@", str)

但我就是不明白为什么这会产生影响。有人可以解释为什么会这样吗?

最佳答案

XCT... 宏被编写为接受格式字符串——字符串本身是可选的(因此编写 XCTAssertTrue(YES) 是有效的),但它们必须是常量字符串。你不能在没有格式字符串的情况下将对象传递到宏中,这就是 XCTAssertTrue(YES, @"%@", str) 起作用的原因,但是,比如说,XCTAssertTrue(YES, str) XCTAssertTrue(NO, nil) 不会。

关于ios - 为什么将 NSString 对象传递给 XCTAssertTrue 的 "format"参数会导致构建错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19828591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com