@(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

对NSNumber的理解

Restkit 从 NSNumber 序列化布尔值

NSNumber类和NSString类

如何将@NO 和@YES 与优雅进行比较并且没有误报/否定的风险?

NSString 到 NSNumber