2010-06-08 2 views
0

나는 다음과 같은 코드를 가지고 : 나는 악기와 시뮬레이터의 코드를 실행하고이 (가) 누출 다음보고NSURL을 출시해야합니까?

+ (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; 
} 
} 

을 : alt text http://img267.imageshack.us/img267/7651/instruments.png 다음 줄을 가리키는 :

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

내가 꽤입니다 NSURL을 공개 할 필요가 없다는 것을 명심하십시오. (이는 init 또는 copy로 생성 된 객체 만 해제해야하는 관습으로 인해). 내가 잘못? 아니면 코드에 다른 문제가 있습니까?

+0

이 기능은 어떤 기능을 실행합니까? '[[NSURL alloc] initWithString : @ "XYZ"]'을 사용해 보시고, 작업이 끝나면 놓으십시오. 그게 누출인가? – Emil

답변

1

나는 당신이 옳다고 말할 수 있습니다. loginURL을 해제 할 필요는 없습니다.

그러나 코드의 다른 부분에서 너는 logoutRequest을 공개합니다.

// Note no retain of logoutRequest here as is done elsewhere 
ASIFormDataRequest *logoutRequest = [ASIFormDataRequest requestWithURL:logoutURL]; 
// ... 
[logoutRequest release]; 
+0

오메가는 계기가 logoutRequest와 loginRequest와 관련된 또 다른 누설을 보여주기 때문에 릴리스 코드를 추가했습니다. 인스 트루먼트가 누출 된 것을 보여주는 이유는 무엇입니까? – Jakub

0

왜 logoutRequest를 출시 하시겠습니까? 당신은 그것을 지키지 않았습니다.

NSURL의 사용과 관련하여 아무런 문제가 보이지 않습니다. 모두 자동 릴리즈됩니다.

관련 문제