aka*_*aru 7 iphone memory-management nsautoreleasepool ios
我的意思是,如果我绝对肯定我没有创建任何自动释放的对象,那么它当然不会.我真正担心的是,如果还有其他任何内幕我不明白.我有一个调用函数的后台线程.我必须始终创建自动释放池吗?
- (void)someFuncOnABackgroundThread
{
//don't seem to need this. no leaks found
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//do something that doesn't create any objects, or only use alloc/init/release
NSString* str = [[NSString alloc] init];
[str release];
[pool drain];
}
Run Code Online (Sandbox Code Playgroud)
最终,这取决于您在实现中使用的接口。
示例1
如果您正在与 Foundation 或其他 objc 类型交互,那么您应该这样做。毫无疑问。
回答特定于您发布的示例:在这种情况下肯定会创建一个 - NSString api 应该假设自动释放池已就位。
示例2
如果您完全在 libc 中处理 api,则没有必要。
底线
可能需要很多时间才能理解哪里有必要(或没有)。
实现可以改变,并且它们可以引入自动释放的对象。
您应该保证永远不会引入泄漏,尤其是出于如此简单的原因。
这是一个需要克服的简单问题:如果有疑问,就创建一个。
归档时间: |
|
查看次数: |
461 次 |
最近记录: |