免责声明:Objective-C知识有限(传递好奇心).
if (@YES)
Run Code Online (Sandbox Code Playgroud)
VS
if (YES)
Run Code Online (Sandbox Code Playgroud)
有什么不同?
根据我的理解,@ YES是一个bool对象文字,YES是一个扩展为1的宏?它是否正确?如果是这样,为什么使用@YES代替YES,反之亦然?
@YES是一个快捷方式[NSNumber numberWithBool:YES],所以这个:
if (@YES)
Run Code Online (Sandbox Code Playgroud)
实际意味着
if ([NSNumber numberWithBool:YES] != nil)
Run Code Online (Sandbox Code Playgroud)
注意,无论是什么数字(或bool值)都无关紧要.你只是测试它是一个有效的对象.如果你像那样测试它,甚至@NO会评价YES,因为它是一个非零NSNumber实例:
if (@NO) NSLog(@"test");
Run Code Online (Sandbox Code Playgroud)
输出:
2013-12-07 21:02:49.828 MyApp[37512:70b] test
Run Code Online (Sandbox Code Playgroud)
长话短说:不要使用@YES或不@NO喜欢它,它们不会像你期望的那样表现.
| 归档时间: |
|
| 查看次数: |
561 次 |
| 最近记录: |