@(YES) 与 [NSNumber numberWithBool:YES] [重复]
Posted
技术标签:
【中文标题】@(YES) 与 [NSNumber numberWithBool:YES] [重复]【英文标题】:@(YES) vs [NSNumber numberWithBool:YES] [duplicate] 【发布时间】:2016-07-26 08:10:53 【问题描述】:我正在发出一个HTTP
请求,我必须在其中发送一个bool
值。我都试过了。
两者的工作方式相同。我很困惑哪个更好?他们之间有什么区别吗?
【问题讨论】:
“更好”是为了什么? 【参考方案1】:@(YES) 是编译器特性。其实@(YES)转换成[NSNumber numberWithBool:YES],性能上没有区别。是为了方便和可读性而提供的(类似于@[],@)。
【讨论】:
【参考方案2】:不会。编译器会将@YES
转换为[NSNumber numberWithBool:YES]
。
【讨论】:
【参考方案3】:这两种方法没有区别,你应该都可以。不过我更喜欢[NSNumber numberWithBool:YES]
,因为如果您返回代码进行调试,有时它更具可读性。 @(Yes) 是 nsnumber 的字面语法,当你使用 @"string" 为你创建 NSString 时完全一样
【讨论】:
【参考方案4】:一个是literal。另一个是通过便利初始化器创建的。
它们最终成为具有相同内容的相同类型的对象,但我怀疑第一个对象更容易让您(以及查看您的代码的其他人)阅读。
【讨论】:
【参考方案5】:@(YES)
是与[NSNumber numberWithBool:YES]
相同的文字。不知道字面量性能会不会比直接调用慢一些。
【讨论】:
以上是关于@(YES) 与 [NSNumber numberWithBool:YES] [重复]的主要内容,如果未能解决你的问题,请参考以下文章
从 NSDictionary 获取包含 NSNumber 布尔值的键列表,其中值为 @YES