Objective-C中@TRUE的含义是什么?附代码实例
关于Objective-C中@TRUE的解析
嘿,这个问题问得很细致!我来帮你把@TRUE的来龙去脉讲清楚:
1. 先搞懂几个核心宏的定义
在Objective-C的环境里:
TRUE和FALSE是C语言标准宏,分别被定义为1和0;YES和NO是Objective-C专属宏,本质上也分别对应1和0(严格来说YES是BOOL类型的1,不过数值上和TRUE完全一致)。
2. @TRUE到底是什么?
Objective-C的@字面量语法,作用是把基础类型的常量包装成对应的Foundation对象:
@YES是[NSNumber numberWithBool:YES]的语法糖;- 而
@TRUE本质就是@1,也就是包装了数值1的NSNumber对象——因为TRUE本身就是1,所以@TRUE和@YES生成的是完全等价的NSNumber实例。
你可以用这段代码验证:
NSNumber *num1 = @TRUE; NSNumber *num2 = @YES; if ([num1 isEqual:num2]) { NSLog(@"两者完全等价"); // 会输出这句话 }
3. 为什么会有人用@TRUE?
这更多是编码习惯问题:
- 有些开发者习惯C语言风格的
TRUE/FALSE,就会写成@TRUE; - 多数Objective-C项目里更常用
@YES/@NO,因为更贴合OC的语言风格,但@TRUE是完全合法的写法,功能上没有任何区别。
内容的提问来源于stack exchange,提问作者Richard Topchii
相关产品推荐
相关产品推荐

