Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标c中的工厂方法_Objective C_Memory Management_Ios6_Xml Parsing - Fatal编程技术网

Objective c 目标c中的工厂方法

Objective c 目标c中的工厂方法,objective-c,memory-management,ios6,xml-parsing,Objective C,Memory Management,Ios6,Xml Parsing,我正在解析一个xml提要(使用NSXML解析器),其中我需要创建一组相同的对象foo,然后将这些对象添加到NSMutableArray中。我的问题是在尝试此操作时涉及内存管理 在我看来,我的两个选择是: 1) 创建一个工厂方法,根据需要创建对象。这是我的工厂方法,我在xml解析器中添加了它作为方法 + (id)create_foo { return [[foo alloc] init]; } 2) 我有自动参考指望。所以我想我可以在xml解析器中创建一个foo对象作为实例变量,并让自动内存管理

我正在解析一个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];
}

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

您是否已经确定了可测量的性能瓶颈

如果没有,不要担心


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

我将获得“开发人员工具”,并将回复您我是否看到瓶颈。我对ARC的性能感兴趣。我很好奇-大多数专业开发人员是使用ARC还是喜欢自己处理内存管理?取决于团队;有的有,有的没有。自1989年以来,我一直在开发Objective-C,并在我参与的所有项目(包括苹果公司的项目)中使用ARC。ARC的性能在许多情况下比手动保留释放快,并且在其他情况下是同等的。