How to remove NSString Related Memory Leaks?

Posted by Rahul Vyas on Stack Overflow See other posts from Stack Overflow or by Rahul Vyas
Published on 2009-08-24T09:24:25Z Indexed on 2010/04/29 4:57 UTC
Read the original article Hit count: 386

in my application this method shows memory leak how do i remove leak?

-(void)getOneQuestion:(int)flashcardId categoryID:(int)categoryId
{   

    flashCardText = [[NSString alloc] init];
    flashCardAnswer=[[NSString alloc] init];
    //NSLog(@"%s %d %s", __FILE__, __LINE__, __PRETTY_FUNCTION__, __FUNCTION__);

    sqlite3 *MyDatabase;
    sqlite3_stmt *CompiledStatement=nil;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *MyDatabasePath = [documentsDirectory stringByAppendingString:@"/flashCardDatabase.sqlite"];
    if(sqlite3_open([MyDatabasePath UTF8String],&MyDatabase) == SQLITE_OK)
    {
    	sqlite3_prepare_v2(MyDatabase, "select flashCardText,flashCardAnswer,flashCardTotalOption from flashcardquestionInfo where flashCardId=? and categoryId=?", -1, &CompiledStatement, NULL);
    	sqlite3_bind_int(CompiledStatement, 1, flashcardId);
    	sqlite3_bind_int(CompiledStatement, 2, categoryId);
    	while(sqlite3_step(CompiledStatement) == SQLITE_ROW)
    	{		
    		self.flashCardText = [NSString stringWithUTF8String:(char *)sqlite3_column_text(CompiledStatement,0)];
    		self.flashCardAnswer= [NSString stringWithUTF8String:(char *)sqlite3_column_text(CompiledStatement,1)];
    		flashCardTotalOption=[[NSNumber numberWithInt:sqlite3_column_int(CompiledStatement,2)] intValue];
    	}
    	sqlite3_reset(CompiledStatement);
    	sqlite3_finalize(CompiledStatement);
    	sqlite3_close(MyDatabase);
    }

}

this method also shows leaks.....what's wrong with this method?

-(void)getMultipleChoiceAnswer:(int)flashCardId
 {  
if(optionsList!=nil)
	[optionsList removeAllObjects];
else
	optionsList = [[NSMutableArray alloc] init];

sqlite3 *MyDatabase;
sqlite3_stmt *CompiledStatement=nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *MyDatabasePath = [documentsDirectory stringByAppendingString:@"/flashCardDatabase.sqlite"];
if(sqlite3_open([MyDatabasePath UTF8String],&MyDatabase) == SQLITE_OK)
{
	sqlite3_prepare_v2(MyDatabase,"select OptionText from flashCardMultipleAnswer where flashCardId=?", -1, &CompiledStatement, NULL);
	sqlite3_bind_int(CompiledStatement, 1, flashCardId);
	while(sqlite3_step(CompiledStatement) == SQLITE_ROW)
	{		
		[optionsList addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(CompiledStatement,0)]];
	}
	sqlite3_reset(CompiledStatement);
	sqlite3_finalize(CompiledStatement);
	sqlite3_close(MyDatabase);
}

}

alt text

© Stack Overflow or respective owner

Related posts about iphone-sdk

Related posts about xcode