我是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 –