1

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

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

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

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

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

4

1 回答 1

5

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

即使使用这些便利工厂(它们被称为)方法,它也可以。这里都解释得很好。

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

于 2013-04-07T18:07:23.317 回答