0
다음 Sqlite 코드에서 Instruments에서 메모리 누수가 발생합니다.어떻게 Sqlite 코드에 대한 메모리 누수를 해결할 수 있습니까?
NSArray *result = [self executeQuery:sql arguments:argsArray];
다음과 같은 방법이 필요합니다.
- (NSArray *)executeQuery:(NSString *)sql arguments:(NSArray *)args {
sqlite3_stmt *sqlStmt;
if (![self prepareSql:sql inStatament:(&sqlStmt)])
return nil;
int i = 0;
int queryParamCount = sqlite3_bind_parameter_count(sqlStmt);
while (i++ < queryParamCount)
[self bindObject:[args objectAtIndex:(i - 1)] toColumn:i inStatament:sqlStmt];
NSMutableArray *arrayList = [[NSMutableArray alloc] init];
int columnCount = sqlite3_column_count(sqlStmt);
while ([self hasData:sqlStmt]) {
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
for (i = 0; i < columnCount; ++i) {
id columnName = [self columnName:sqlStmt columnIndex:i];
id columnData = [self columnData:sqlStmt columnIndex:i];
[dictionary setObject:columnData forKey:columnName];
}
[arrayList addObject:[dictionary autorelease]];
}
sqlite3_finalize(sqlStmt);
return arrayList;
}
어떻게 해결할 수 있습니까?
편집 내 질문. 'executeQuery' 세부 사항을 위해. – Devang
업데이트 된 답변보기 분명히 이것은 나머지 코드가 executeQuery 결과를 사용하는 방법에 따라 결과가있을 수 있지만 메모리 관리와 일관성이 있다면 괜찮을 것입니다. – Roger