【发布时间】: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