如何释放将返回给调用者的实例变量?

zs2*_*020 1 iphone cocoa-touch objective-c

-(NSMutableArray *)processResult:(NSArray*)matchArray 
                removeString:(NSString *)removeStr{
    NSString *newLink;
    NSMutableArray *result = [[NSMutableArray alloc] initWithCapacity:[matchArray count]];
    //doing sth to result
    return result;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,结果变量将返回给调用者.调用者将在应用程序的生命周期内使用此变量.有没有办法释放这个方法中创建的?

Geo*_*che 5

使用内存管理指南,返回自动发布的实例:

NSMutableArray *result = [NSMutableArray arrayWithCapacity:[matchArray count]];
//doing sth to result
return result;
Run Code Online (Sandbox Code Playgroud)

这样,来电者可以决定是否想要获得所有权.

根据指南,命名意味着该方法返回的内容:

  • 您拥有自己创建的任何对象.
  • 使用名称以"alloc"或"new"开头或包含"copy"(例如,alloc,newObject或mutableCopy)的方法"创建"对象.

对于您的方法名称,这不适用,因此应返回自动释放的实例.