【问题标题】:Object creation using NSNumber literals使用 NSNumber 字面量创建对象
【发布时间】:2015-08-09 12:56:03
【问题描述】:

这两种创建异议的方法有什么区别?

  1. NSNumber *aInt= @54;

  2. NSNumber *aInt= [NSNumber numberWithInt:54];

我知道第一种方法是 NSNumber 文字,第二种是 NSNumber 类方法。两者都用于创建 NSNumber 对象。但是哪种方法更好? 如果我使用文字样式创建对象,那么如何为它分配内存?与第二种方法有何不同?请给我一些关于这些概念的关键点,以便我更喜欢创建 NSNumber 对象的更好方法。

我知道该对象是在运行时创建的。文字对象是否也在运行时创建?请提供一些重要的关键点来消除我的疑问。

【问题讨论】:

  • "但是哪种方法更好?" – 请,不要。只是不要问这样的问题。他们悲惨地缺乏任何和所有背景。更好为了什么? 哪种语言更好,Python 还是英语?这一切都取决于。对于编程,Python。对于写诗,英语。同样,对象字面量更短、更易读,但显式方法调用向后兼容旧编译器。

标签: objective-c literals nsnumber


【解决方案1】:

它们是相同的。事实上,它们在编译期间被翻译成相同的代码。

我总是选择文字,因为它更容易阅读。

【讨论】:

    【解决方案2】:

    这两种异议方式有什么区别 创作?

    它们是相同的。

    答案:

    没有。 1:

    使用@-prefix 将自动包装标量类型,如intfloat

    没有。 2:

    使用numberWith[type]专门创建NSNumber,因此易于区分。

    我不太确定它的内存管理,但我认为,谈论内存分配是一样的。


    我个人使用numberWith[type],因为它更容易区分(对我来说),我的意思是它拥有的类型,我不必担心向后兼容性,但我仍然了解文字,所以我没有任何使用问题它。

    更好的方法很难回答,这完全取决于您/开发人员。

    您可能还想查看此link

    请避免在一篇文章中问太多问题。干杯! :)

    【讨论】:

      猜你喜欢
      • 2012-03-01
      • 2011-07-19
      • 1970-01-01
      • 2015-11-15
      • 2014-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      相关资源
      最近更新 更多