Утечки при передаче запроса с использованием URL на NSString, Objective-C - PullRequest
0 голосов
/ 14 июня 2010

Я получаю утечку в этом методе, даже если выделенная nsstring освобождена.

Теперь я взял stringWithFormat, но все же он показывает утечку в строке "NSData * returnData = ...."

-(BOOL)getTicket:(NSString*)userName passWord:(NSString*)aPassword isLogin:(BOOL)isLogin
{
NSString* str=@"";
if (isLogin == YES)
{

str =[NSString stringWithFormat:@"AGENT=true&LOGIN_ID=%@&PASSWORD=%@",[self _encodeString:userName],[self _encodeString:aPassword]];

}
else if (isLogin == NO) 
{
    str =[NSString stringWithFormat:@"AGENT=true&LOGIN_ID=%@&PASSWORD=%@",[self _encodeString:userName],[self _encodeString:aPassword]];
}

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:str] 
                                                       cachePolicy:NSURLRequestReloadIgnoringCacheData 
                                                   timeoutInterval:25.0];
[request setHTTPMethod: @"POST"];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

printf("\n returnString in getticket:%s",[returnString UTF8String]);

NSRange textRange;

textRange =[returnString rangeOfString:@"TICKET"];

if(textRange.location != NSNotFound)
{

    NSArray*  splitValues = [returnString componentsSeparatedByString:@"TICKET="];
    NSString* str1 = [splitValues objectAtIndex:1];
    NSArray* splitValues1 = [str1 componentsSeparatedByString:@"RESULT"];
    NSString* ticket1 = [splitValues1 objectAtIndex:0];
    self.ticket = ticket1;

    self.isCorrectLogin = YES;
    [returnString release];
    return YES;
}
else
{
    self.isCorrectLogin = NO;
    [returnString release];
    return NO;
}

return NO;

}

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 14 июня 2010

Macbirdie прав в том, что составление строки с использованием stringByAppendingString: ужасно неэффективно.Я бы предложил вместо этого использовать +stringWithFormat:.

Что касается утечки, то если утечка находится там, где вы говорите, то это может быть утечка в базовой структуре (и это может быть ложный положительный результат).Разместите обратный след утекшего объекта (который можно получить из инструмента Allocations).

...