Должен ли я выпустить NSURL? - PullRequest
0 голосов
/ 08 июня 2010

У меня есть следующий код:

    + (BOOL)updateStatus:(NSString *)status forUsername:(NSString *)username withPassword:(NSString *)password {

NSURL *loginURL = [NSURL URLWithString:@"XYZ"];
ASIFormDataRequest *loginRequest = [[ASIFormDataRequest requestWithURL:loginURL] retain]; 
[loginRequest setPostValue:@VALUE forKey:@"SOME_KEY"]; 
[loginRequest setPostValue:username forKey:@"username"]; 
[loginRequest setPostValue:password forKey:@"password"];  
[loginRequest startSynchronous]; 

int loginStatusCode = [loginRequest responseStatusCode];
[loginRequest release];

if (loginStatusCode == 200) { //if we were able to login
    NSURL *updateURL = [NSURL URLWithString:@"ABC"];
    ASIFormDataRequest *updateRequest = [[ASIFormDataRequest requestWithURL:updateURL] retain]; 
    [updateRequest setPostValue:@VALUE forKey:@"SOME_KEY"]; 
    [updateRequest setPostValue:VALUE   forKey:@"SOME_KEY"];
    [updateRequest setPostValue:@"VALUE" forKey:@"SOME_KEY"]; 
    [updateRequest startSynchronous]; 

    int statusCode = [updateRequest responseStatusCode];
    [updateRequest release];

    NSURL *logoutURL = [NSURL URLWithString:@"ABC"];
    ASIFormDataRequest *logoutRequest = [ASIFormDataRequest requestWithURL:logoutURL]; 
    [logoutRequest setPostValue:VALUE forKey:@"KEY"]; 
    [logoutRequest startSynchronous]; 

    [logoutRequest release];
    if (statusCode == 200) { /
        return YES;
    } else {
        return NO;
    }
} else {
    return NO; 
}
}

Я запускаю код на симуляторе с приборами, и он сообщает о следующей утечке: альтернативный текст http://img267.imageshack.us/img267/7651/instruments.png, указывающий на следующую строку:

NSURL *loginURL = [NSURL URLWithString:@"XYZ"];

Я почти уверен, что мне не нужно выпускать NSURL (из-за соглашения, что мне нужно выпускать только объекты, созданные с помощью init или copy).Я ошибся?или что-то не так с кодом?

Ответы [ 2 ]

1 голос
/ 08 июня 2010

Из того, что я могу сказать, вы правы.Вам не нужно выпускать loginURL.

Однако я заметил, что в другом месте кода вы перепродали logoutRequest.

// Note no retain of logoutRequest here as is done elsewhere
ASIFormDataRequest *logoutRequest = [ASIFormDataRequest requestWithURL:logoutURL];   
// ... 
[logoutRequest release];
0 голосов
/ 08 июня 2010

Почему вы выпускаете logoutRequest? Вы не сохранили это.

Я не вижу проблем с использованием NSURL, все они автоматически выпущены.

...