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

标签 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)? 我必须在 myNames 数组上使用 [[NSArray alloc] init] 吗?或者我必须在 returnList 上使用 alloc 而不是自动释放方法?或者我可以只依赖 ARC 吗?或者有其他解决方案吗?

最佳答案

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

关于objective-c - 使用 ARC 返回自动释放的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7947255/

相关文章:

ios - 将 NSDictionary 映射到 NSObject 子类

iOS zip 文件解压代码问题

iphone - AVAssetExportSession estimatedOutputFileLength 总是返回 0

c++ - 在自定义堆栈分配器中释放内存

objective-c - 获取 NSString 的 Unicode 点并将其放入另一个 NSString

iphone - iPhone 和 Xcode 4 的压缩/解压库

ios - 当前周开始和结束日期

ios - 特定 UITableView 上的新 UITabbar

c# - 我应该使用静态方法还是非静态方法?

c - 虚拟内存系统、页表和TLB