3

最近看到这段代码:

WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
[configuration.preferences setValue:@TRUE forKey:@"xxxx"];

代表什么@TRUE?我第一次看到这个结构。

我知道这YES等于true

@YES等于NSNumber nubmerWithBool,但@TRUE代表什么?

StackOverflow 问题与使用“@TRUE”构造的示例

4

2 回答 2

2

如果你预处理:

NSNumber *test = @TRUE;

它最终成为

NSNumber *test = @1;

(一个铿锵的文字[NSNumber numberWithInt:1])。

这是合乎逻辑的,考虑TRUE被预处理为1.

这可能更容易看到:

#define MY_STRING "my_string"

NSString *string = @MY_STRING;

它被预处理为:

NSString *string = @"my_string";
于 2019-04-29T11:33:19.270 回答
1

它是一种NSNumber文字,一种NSNumber从标量文字表达式创建实例的方式。

来自Clang 9 文档

在 Objective-C 中,任何以 '@' 字符为前缀的字符、数字或布尔文字都将评估为指向使用该值初始化的 NSNumber 对象的指针。C 的类型后缀可用于控制数字文字的大小。

于 2019-04-29T11:34:03.930 回答