如何使用ARC正确初始化目标c中的对象

vbe*_*nar 1 constructor initialization objective-c automatic-ref-counting

对于许多类,有initXXX方法和typeXXX方法,例如:

NSNumber *n1 = [[NSNumber alloc] initWithInt:1];
NSNumber *n2 = [NSNumber numberWithInt:1];
Run Code Online (Sandbox Code Playgroud)

我读过有关手动内存管理的内容,我认为我理解这些内容与手动内存管理有何不同(第二种是自动释放对象的快捷方式).

但是使用ARC我不明白我应该使用哪种API?我是否应该只使用alloc-init模式,因为ARC足够智能,可以在必要时自动释放值,并在仅在本地使用值时避免自动释放开销?或者ARC可以优化自动释放和相应的开销,即使我使用像numberWithInt这样的东西?

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

小智 5

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

即使有这些便利工厂(他们也称之为)方法,它也可以.这里都解释得很好.

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

  • 从clang 3.3开始,你也可以使用@ 1. (3认同)