2010-11-27 7 views
0

Следующий фрагмент кода из файла facebook.m:Iphone утечку памяти

-(void) requestWithMethodName:(NSString *)methodName 
       andParams:(NSMutableDictionary *)params 
      andHttpMethod:(NSString *)httpMethod 
       andDelegate:(id <FBRequestDelegate>)delegate { 
    NSString * fullURL = [kRestApiURL stringByAppendingString:methodName]; 
    [self openUrl:fullURL params:params httpMethod:httpMethod delegate:delegate]; 
} 

Я обнаружил утечку памяти на 100% в fullURL инициализации линии. Я не могу найти решение для этого.

Если какое-либо известное решение для него, то, пожалуйста, помогите мне.

+0

Пожалуйста, введите код в фрагмент кода. – TheSquad 2010-11-27 12:32:12

ответ

0

Здесь нет утечки. Метод stringByAppendingString: возвращает новую строку, которая уже добавлена ​​в пул автоопределений.

0

Инструменты обнаруживают утечку. Он исчезает, если избавиться от сохранения в методе FBRequest класса

+ (FBRequest *)getRequestWithParams:(NSMutableDictionary *) params 
         httpMethod:(NSString *) httpMethod 
          delegate:(id<FBRequestDelegate>) delegate 
         requestURL:(NSString *) url { 
    FBRequest* request = [[[FBRequest alloc] init] autorelease]; 
    request.delegate  = [delegate retain]; 
    request.url   = [url retain];   // <----- no leak if you don't retain url 
    request.httpMethod = [httpMethod retain]; 
    request.params  = [params retain]; 
    request.connection = nil; 
    request.responseText = nil; 

    return request; 
} 

Но здесь все, кажется, хорошо для меня, так что я не могу сказать, если ошибка здесь или в инструменты. Предложения?

Смежные вопросы