【问题标题】:@(YES) vs [NSNumber numberWithBool:YES] [duplicate]@(YES) 与 [NSNumber numberWithBool:YES] [重复]
【发布时间】:2016-07-26 08:10:53
【问题描述】:

我正在发出一个HTTP 请求,我必须在其中发送一个bool 值。我都试过了。

两者的工作方式相同。我很困惑哪个更好?他们之间有什么区别吗?

【问题讨论】:

  • “更好”是为了什么?

标签: ios objective-c http boolean nsnumber


【解决方案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] 相同的文字。不知道字面量性能会不会比直接调用慢一些。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-04-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-03-12
            相关资源
            最近更新 更多