Ошибка утечки памяти - PullRequest
       1

Ошибка утечки памяти

0 голосов
/ 11 октября 2011

Я новичок в разработке приложений для iPhone и не могу исправить эту ошибку, когда запустил анализатор утечек (XCode-> Product-> Analyze) над своим кодом. И это показало мне потенциальную утечку объекта на некоторой линии.

1) Метод возвращает целевой объект c с счетом удержания +1 (из-за ссылки)

2) объект, размещенный в строке 128, не упоминается позже в этом пути выполнения и имеет счетчик +1 (объект утек). ResponeData сохраняется в части объявления свойства

-(IBAction)registerButtonPressed:(id)sender
{

self.responseData = [NSMutableData data];

NSString *username = txtUsername.text;

NSString *jsonstring = [NSString stringWithFormat:@"http://demo.elgghub.com/apis/services/api/rest/json/?method=register&username=%@",username];


NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:jsonstring]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}


- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

[responseData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

[responseData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {

[connection release];

self.responseData = nil;

UIAlertView *alert = [[UIAlertView alloc] 
                      initWithTitle:@"Error" 
                      message:@"Please check your network connection and relaunch the application" 
                      delegate:self 
                      cancelButtonTitle:@"Dismiss" 
                      otherButtonTitles:nil, nil];

[alert show];

[alert release];

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{

[connection release];

NSString *responseStringReg = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
self.responseData = nil;


NSDictionary *login =(NSDictionary*)[responseStringReg JSONValue] ;
[responseStringReg release];
NSNumber *status = [login objectForKey:@"status"];
NSString *statusString = [status stringValue];
NSString *message = [login objectForKey:@"message"];

}

-(void)dealloc
{

 [responseData release];

 [demoView release];

 [super dealloc];
}

1 Ответ

0 голосов
/ 11 октября 2011

Если в строке 128 вы создаете NSURLConnection, появляется предупреждение, потому что анализатор не может знать, что он будет выпущен для делегата. Вы, вероятно, должны хранить ссылку на него в любом случае, возможно, в переменной экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...