当我运行仪器工具我得到内存泄漏在下面的行,“(NSString *)feedString”是我从服务器获得的JSON响应,可以任何人给和想法怎么可以解决这个内存泄露,内存泄漏在NSMutableDictionary
感谢, 山姆,
NSMutableDictionary *allCards = [NSMutableDictionary dictionary];
CardTypeDTO *cardTypeDTO = [[CardTypeDTO alloc] init];
[cardTypeDTO setImageURL:[[CommonUtility urlDecode:[cardDetail objectForKey:@"imageURL"]] retain]];
[allCards setValue:cardTypeDTO forKey:[cardDetail objectForKey:@"accountId"]];
-(id)parseFeed:(NSString *)feedString{
//NSMutableDictionary *allCards = [[NSMutableDictionary alloc] init];
NSMutableDictionary *allCards = [NSMutableDictionary dictionary];
NSMutableDictionary *parsedOutput = (NSMutableDictionary *)feedString;
NSArray *objectKeys = [parsedOutput allKeys];
for (int i = 0; i < [objectKeys count]; i++) {
NSAutoreleasePool *loopPool = [[NSAutoreleasePool alloc] init];
NSMutableDictionary *cardDetail = [parsedOutput objectForKey:[objectKeys objectAtIndex:i]];
CardTypeDTO *cardTypeDTO = [[CardTypeDTO alloc] init];
[cardTypeDTO setAccountId:[cardDetail objectForKey:@"accountId"]];
[cardTypeDTO setCardName:[cardDetail objectForKey:@"cardName"]];
[cardTypeDTO setBankName:[cardDetail objectForKey:@"bankName"]];
[cardTypeDTO setCustomMessage:[cardDetail objectForKey:@"customMessage"]];
[cardTypeDTO setAvailableAmount:[cardDetail objectForKey:@"availableAmount"]];
[cardTypeDTO setBalanceAmount:[cardDetail objectForKey:@"balanceAmount"]];
[cardTypeDTO setPercentage:[cardDetail objectForKey:@"percentage"]];
//[cardTypeDTO setImageURL:[cardDetail objectForKey:@"imageURL"]];
[cardTypeDTO setImageURL:[[CommonUtility urlDecode:[cardDetail objectForKey:@"imageURL"]] retain]];
[cardTypeDTO setNickName:[cardDetail objectForKey:@"nickName"]];
[cardTypeDTO setBalanceStatusCode:[cardDetail objectForKey:@"balanceStatusCode"]];
[cardTypeDTO setBalanceStatusMsg:[cardDetail objectForKey:@"balanceStatusMsg"]];
[cardTypeDTO setOnlineLinked:[cardDetail objectForKey:@"onlineLinked"]];
[cardTypeDTO setCardType:[cardDetail objectForKey:@"cardType"]];
[allCards setValue:cardTypeDTO forKey:[cardDetail objectForKey:@"accountId"]];
//[cardTypeDTO release];
[loopPool release];
}
return allCards;
}
+(NSString *) urlDecode: (NSString *) url
{
NSString *result=[url stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
return [result autorelease];
}
接受一些答案。并修复你的代码的格式,因为它是不可读的。 – 2010-07-30 10:22:17
我修正了格式。 – Sam 2010-07-30 10:32:01