【问题标题】:Does ARC eliminate the need for temporary variables?ARC 是否消除了对临时变量的需求?
【发布时间】:2012-07-17 04:39:36
【问题描述】:

如果不启用 ARC,我们会编写

NSArray *items = [[NSArray alloc] initWithObjects:
                  @"a",
                  @"b",
                  @"c",
                  @"d",
                  nil];

self.allItems = items;
[items release];

我只是想知道我们是否可以像这样使用启用 ARC 的捷径:

self.allItems = [[NSArray alloc] initWithObjects:
                  @"a",
                  @"b",
                  @"c",
                  @"d",
                  nil];

我们可以在使用 ARC 时消除items 吗?最佳做法是什么?

【问题讨论】:

  • 我会将标题更改为“ARC 是否消除了临时变量的需求?”。现在,听起来 ARC 正在背后做某种编译器优化,这不是你要问的。
  • 感谢 ranReloaded。我修改了问题标题。

标签: ios memory-management automatic-ref-counting


【解决方案1】:

是的,您展示的第二个示例在 ARC 下就很好,并且可能是可取的,因为它更简洁。

【讨论】:

    【解决方案2】:

    是的,如果您使用 ARC,则可以消除 items 变量。如果您在其他地方不需要它并且您认为它不会使您的代码更易于理解,我建议您将其删除。我肯定会在你的例子中消除它。

    【讨论】:

      【解决方案3】:

      第二个示例将起作用,并且是现在的最佳实践。使用 ARC,您不再需要调用 retain 或 release。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-22
        • 2010-10-19
        • 2012-01-19
        • 1970-01-01
        • 2016-11-25
        • 2012-12-01
        • 2011-07-13
        相关资源
        最近更新 更多