我一直在追踪我的 iOS 应用程序中的内存泄漏,并使用泄漏工具不断返回以下代码:
NSMutableArray *resultSet = [[NSMutableArray alloc] initWithCapacity:3];
NSAutoreleasePool *innerPool = [[NSAutoreleasePool alloc] init];
FMResultSet *rs = [db executeQuery:query,equipmentID];
while ([rs next])
{
[resultSet addObject: [rs resultDict]];
}
[rs close];
[innerPool release];
return [resultSet autorelease];
这是 FMDB 的正确用法(在内存管理方面)吗?这是泄漏仪器的屏幕截图:
泄露的详细截图:
最佳答案
是的,这是正确的内存管理。 [rs close];
行在技术上是不必要的,因为它会在 FMResultSet
被释放时发生(如果它还没有发生)(作为池排出的一部分) .但是明确地把它放在那里是可以的。
您是否可能过度保留返回数组?
关于objective-c - iOS - FMDB 使用和内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6913796/