Objective-C 中的“@TRUE”
"@TRUE" in Objective-C
最近看到这段代码:
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
[configuration.preferences setValue:@TRUE forKey:@"xxxx"];
@TRUE
代表什么?我第一次看到这种结构。
我知道 YES
等于 true
和
@YES
等于 NSNumber nubmerWithBool
,但是 @TRUE
代表什么?
Whosebug question wtih example using "@TRUE" construct
如果你预处理:
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";
它是一个 NSNumber
文字,一种从标量文字表达式创建 NSNumber
实例的方法。
In Objective-C, any character, numeric or boolean literal prefixed
with the '@' character will evaluate to a pointer to an NSNumber
object initialized with that value. C’s type suffixes may be used to
control the size of numeric literals.
最近看到这段代码:
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
[configuration.preferences setValue:@TRUE forKey:@"xxxx"];
@TRUE
代表什么?我第一次看到这种结构。
我知道 YES
等于 true
和
@YES
等于 NSNumber nubmerWithBool
,但是 @TRUE
代表什么?
Whosebug question wtih example using "@TRUE" construct
如果你预处理:
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";
它是一个 NSNumber
文字,一种从标量文字表达式创建 NSNumber
实例的方法。
In Objective-C, any character, numeric or boolean literal prefixed with the '@' character will evaluate to a pointer to an NSNumber object initialized with that value. C’s type suffixes may be used to control the size of numeric literals.