【问题标题】:How to properly initialize objects in objective c with ARC如何使用 ARC 正确初始化目标 c 中的对象
【发布时间】:2013-04-07 18:05:02
【问题描述】:

很多类都有initXXX方法和typeXXX方法,例如:

NSNumber *n1 = [[NSNumber alloc] initWithInt:1];
NSNumber *n2 = [NSNumber numberWithInt:1];

我已阅读有关手动内存管理的内容,并且我认为我理解这些行与手动内存管理有何不同(第二个只是自动释放对象的快捷方式)。

但是对于 ARC,我不明白我应该使用哪个 API?我是否应该只使用 alloc-init 模式,因为 ARC 足够聪明,可以在必要时自动释放 value,并在 value 仅在本地使用时避免自动释放开销?或者即使我使用 numberWithInt 之类的东西,ARC 也可以优化自动释放和相应的开销?

我想在可用时使用第二种变体,因为它更短且更易于阅读。但我不想仅仅因为这个原因而引入性能开销。

【问题讨论】:

    标签: objective-c constructor initialization automatic-ref-counting


    【解决方案1】:

    或者即使我使用 numberWithInt 之类的东西,ARC 也可以优化自动释放和相应的开销?

    它可以,即使使用这些便利工厂(它们被称为)方法。 Here都解释清楚了。

    所以你可以使用任何一个。

    【讨论】:

    • 从 clang 3.3 开始,您也可以使用 @1。
    • @danh 我很高兴你正确地提到了 Clang 的版本(而不是“Xcode XYZ”。是的,没错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多