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