我是Objectivce-C
的新手,我想知道在没有ARC的情况下memory management
在static library
中的正确方式是什么。 比方说我的图书馆有一个返回NSString*
的方法:Objective-C静态库中的内存管理
- (NSString *) foo
{
...
NSString *result = [[NSString alloc] initWithString:@"bar"];
return [result autorelease];
}
所以,据我了解,因为foo
分配也需要释放它的NSString
(或队列它释放)。 NSString
是一个返回值,所以我唯一能做的就是autorelease
吧。这会产生一个问题:如果在命令行工具中使用库,开发人员需要知道foo
需要@autoreleasepool
,否则在主要内部@autoreleasepool
内多次调用foo
会吃掉内存。在我看来,就像我正在从库中将内存管理委派给应用程序似乎是一件可怕的事情。有一个更好的方法吗?或者我可以以某种方式使foo
需要@autoreleasepool
的开发人员明白吗?
如果我们不知道您是否使用ARC,则此Q无意义。 – hooleyhoop
如果他在静态库中使用'autorelease',那显然意味着他不使用ARC,不是吗? – Zaphod
@hooleyhoop no ARC –