【问题标题】:"@TRUE" in Objective-CObjective-C 中的“@TRUE”
【发布时间】:2019-09-18 00:23:55
【问题描述】:

最近看到这段代码:

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

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

我知道YES 等于true

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

StackOverflow question wtih example using "@TRUE" construct

【问题讨论】:

  • 顺便说一句,在您提到的答案中@YES 将是一个更好的解决方案。
  • 当然,这是标准。问题是关于@TRUE,因为我第一次看到它

标签: ios objective-c boolean wkwebview wkwebviewconfiguration


【解决方案1】:

如果你预处理:

NSNumber *test = @TRUE;

结果是

NSNumber *test = @1;

[NSNumber numberWithInt:1] 的 clang 文字)。

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

这可能更容易看到:

#define MY_STRING "my_string"

NSString *string = @MY_STRING;

预处理为:

NSString *string = @"my_string";

【讨论】:

    【解决方案2】:

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

    来自The Clang 9 documentation

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

    【讨论】:

      猜你喜欢
      • 2010-10-11
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 2012-07-17
      • 2011-09-20
      • 2012-01-15
      相关资源
      最近更新 更多