【问题标题】:Factory methods in objective c目标c中的工厂方法
【发布时间】:2013-05-30 15:37:21
【问题描述】:

我正在解析一个 xml 提要(使用 NSXML 解析器),我需要在其中创建一堆相同的对象 foo,然后将这些对象添加到 NSMutableArray。我的问题与我尝试此操作时的内存管理有关。

在我看来,我的两个选择是: 1)创建一个工厂方法,根据需要创建对象。这是我的工厂方法,我已将其作为方法添加到 xml 解析器中。

+ (id)create_foo
{
return [[foo alloc] init];
}

2) 我开启了自动引用计数。所以我想我可以在 xml 解析器中创建一个 foo 对象作为实例变量,并让自动内存管理在我需要创建一个新的 foo 对象时负责释放该对象。所以在 NSXML 解析器的 didStartelement 方法中

if ([elementName isEqualToString:@"new_foo"])
{
    current_foo = [foo alloc];
}

哪个更有效率?第二个选项似乎工作较少,但我担心自动引用计数。还有第三种选择吗?

【问题讨论】:

    标签: objective-c memory-management ios6 xml-parsing


    【解决方案1】:

    您是否发现了可衡量的性能瓶颈?

    如果没有,请不要担心。

    如果您使用 ARC,编译器/运行时将尽可能优化自动释放的使用(包括工厂方法)。

    【讨论】:

    • 我正在获取“开发者工具”,如果我看到瓶颈,我会回复您。我对ARC的表现很感兴趣。我很好奇 - 大多数专业开发人员使用 ARC 还是喜欢自己处理内存管理?
    • 取决于团队;有些会,有些不会。自 1989 年以来,我一直在开发 Objective-C,并在我参与的所有项目(包括 Apple 的项目)中使用 ARC。在许多情况下,ARC 的性能比手动保留释放要快,在其他情况下也差不多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    相关资源
    最近更新 更多