使用ARC返回自动释放的对象

时间:2011-10-30 19:29:17

标签: objective-c cocoa-touch memory-management ios5 automatic-ref-counting

假设我在A类中编写了以下代码:

-(NSArray *) returnListNames {

    NSArray *returnList = [NSArray arrayWithArray:myListNames];

    return (returnList);
}

在B组中,我以这种方式在某个范围内获得该列表:

{
    /* Without ARC I would  retain the array returned from ClassA 
       to guarantee its reference like this:
       [[myClassA returnListNames] retain]; */

    NSArray *myNames = [myClassA returnListNames];  

}

考虑到returnList是使用自动释放方法分配的,我如何保证不会丢失使用ARC的引用(我不能使用retain)? 我必须在[[NSArray alloc] init]数组上使用myNames吗?或者我必须在alloc上使用returnList而不是自动释放方法?或者我可以依靠ARC吗?还是有另一种解决方案吗?

1 个答案:

答案 0 :(得分:12)

ARC将为您处理此问题,因此您可以依赖它并与该阵列开展业务。如果它发现您需要保留myNames,它会为您添加一个保留调用,或者在编译使用它的代码时执行其他任何实际操作。