【问题标题】:Mutable object creation with class helper method or mutableCopy with ARC使用类辅助方法创建可变对象或使用 ARC 进行 mutableCopy
【发布时间】:2014-07-01 17:13:57
【问题描述】:

据我所知,使用诸如arrayWithArray 之类的辅助方法创建NSMutableArray 会将数组和可变数组都添加到当前的自动释放池中。使用mutableCopy,将复制的数组添加到自动释放池,但生成的NSMutableArray 没有。没有 ARC,这是一个显着的区别。

但是在使用 ARC 时,除了上述内容之外,还有什么与 ARC 无关的区别吗?我已经看到使用两种方式的代码。是否有关于如何创建不可变对象的可变版本、何时启用 ARC 以及为什么会这样的既定最佳实践?

【问题讨论】:

  • 除非你有性能问题,否则不要担心。如果没有分析,您无法判断哪种方法更好。

标签: ios objective-c copy automatic-ref-counting


【解决方案1】:

由于arrayWitharray 在当前自动释放池中添加了两个对象,但后者没有。因此,由于自动释放池的耗尽,第一个的性能略低。所以使用下面的后一个。在弧或非弧中将不可变数组转换为可变数组的简单且最佳的方法:-

  NSMutableArray *array=[yourArray 
  mutableCopy];

【讨论】:

  • 但为什么这是最好的方法?为什么不使用 arrayWithArray?
  • 这不一定是真的,因为在 ARC 下返回的自动释放对象可能不会被添加到自动释放池中。
  • @HussainShabbir,我已经看到了这个问题,但是对于最佳做法和原因没有明确的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多