我对这个很陌生,我想知道在没有 ARC的情况下Objectivce-C正确的方法是什么。可以说我的库有一个返回的方法:memory managementstatic libraryNSString*
- (NSString *) foo
{
...
NSString *result = [[NSString alloc] initWithString:@"bar"];
return [result autorelease];
}
据我了解,由于foo分配了NSString它,它还需要释放它(或排队等待释放)。NSString是一个返回值,所以我唯一能做的就是autorelease它。这就产生了一个问题:如果在命令行工具中使用库,开发人员需要知道foo需要在 main 内多次@autoreleasepool调用,否则会占用内存。在我看来,这就像我将内存管理从库委托给应用程序,这似乎是一件可怕的事情。有一个更好的方法吗?或者我可以以某种方式让需要的开发人员显而易见吗?foo@autoreleasepoolfoo@autoreleasepool