objective-c - iOS - FMDB 使用和内存

标签 objective-c ios sqlite fmdb

我一直在追踪我的 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 的正确用法(在内存管理方面)吗?这是泄漏仪器的屏幕截图:

leaks

泄露的详细截图:

detail

最佳答案

是的,这是正确的内存管理。 [rs close]; 行在技术上是不必要的,因为它会在 FMResultSet 被释放时发生(如果它还没有发生)(作为池排出的一部分) .但是明确地把它放在那里是可以的。

您是否可能过度保留返回数组?

关于objective-c - iOS - FMDB 使用和内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6913796/

相关文章:

objective-c - 我可以使用任何 Cocoa 控制代码作为补丁包吗?

PHP 测试 JSON 包含 SQLite

objective-c - 如何访问其他类中的应用委托(delegate)字段?

ios - 为什么崩溃会随着 "zombie objects"消失?

html - 最小化 iOS 邮件应用程序会破坏 CSS 动画中的 z-index

ios - 如何模拟iOS版本升级?

ios 在两个 uiscrollview 之间移动触摸事件

ios - 在 Xcode 的编译时禁用 -ffast-math

sql - 表变大后,更新查询将永远不会完成

ios - 什么时候需要设置 CALayer 的 contentsScale 属性?