【发布时间】:2012-02-24 13:39:29
【问题描述】:
我无法在类似问题中找到解决问题的方法。我正在使用 fmdb 包装器从 sqlite 数据库中提取一大堆数据。我的 fmdb 实用程序类中有一个类似于此的方法:
- (NSMutableArray *) getConnectionsForKey: (NSString *) key
{
NSString *query = [NSString stringWithFormat:@"select * from user" ];
FMResultSet *results = [database executeQuery:query];
NSMutableArray *retArray = [[ NSMutableArray alloc ] init ];
while ([ results next ]) {
NSString *fname = [ results stringForColumn:@"firstname" ];
NSString *lname = [ results stringForColumn:@"lastname" ];
NSMutableDictionary *aDictionary = [[ NSMutableDictionary alloc ]
init
];
[ aDictionary
setObject:fname
forKey:@"firstname"
];
[ aDictionary
setObject:lname
forKey:@"lastname"
];
[ retArray addObject:aDictionary ];
[ aDictionary release ];
}
[ results close ];
return retArray;
}
将我的信息存储在字典数组中。在我的视图控制器中,我像这样调用我的方法:
-(void) setCurrentConnections: (NSString *) key {
if ( currentConnections != nil ) {
[ currentConnections removeAllObjects ];
}
LocalDatabase *db = [[ LocalDatabase alloc ] init ];
[ db openDatabase ];
currentConnections = [ db getConnectionsForKey:key ];
[ db closeDatabase ];
[ db release ];
}
现在,每次我调用此方法以使用新联系人更新我的数组时,我都会有一个持续的泄漏,正如我使用分配工具所观察到的那样。即使我在从数据库加载后立即释放 currentConnections 并且不再调用此方法时也会发生这种情况,因此我怀疑它与数据库实现有关。有其他人处理过这个问题吗?
【问题讨论】:
标签: objective-c ios sqlite memory fmdb