Запрос ASIHTTP не работает и происходит сбой приложения, когда я пытался освободить объект моего класса - PullRequest
0 голосов
/ 20 сентября 2011

В моем основном классе я создаю объект моего класса AlbumFetcher, вызываю некоторые функции и освобождаю объект.

AlbumFetcher *_albumFetcher = [[AlbumFetcher alloc] init];
[_albumFetcher getData];
[_albumFetcher release];

Когда я вызывал объект после вызова некоторых функций, метод завершения запроса ASIHTTP не вызывался, и приложение зависало. Но когда я не отпускаю объект, все работает идеально. Что я должен сделать

AlbumFetcher *_albumFetcher = [[AlbumFetcher alloc] init];
[_albumFetcher getData];
//[_albumFetcher release]; // now ASIHTTP Request n everything is working fine .....

В классе AlbumFetcher у меня есть эти функции ...

-(void)getData{

    _fullsizeURL = [NSURL URLWithString:@"http://mysite.com/site/alb_iphone"];        

    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:_fullsizeURL];
    [request setDelegate:self];
    [request setDidFinishSelector:@selector(albumrequestDone:)];
    [request setDidFailSelector:@selector(albumrequestFailed:)];
    [request startAsynchronous];
}
- (void)albumrequestDone:(ASIHTTPRequest *)request{
    // here my code
}
- (void)albumrequestFailed:(ASIHTTPRequest *)request{
    // here my code    
}

Так, где я иду не так и где я должен выпустить объект.

1 Ответ

1 голос
/ 20 сентября 2011

В вашем случае ASIHTTPRequest работает асинхронно, то есть в другом потоке. Таким образом, ваш запрос не будет выполнен после [_albumFetcher getData].

Ваш запрос не завершен, пока albumrequestDone:request или albumrequestFailed:request не закончится. Мое предложение ставится [self release] в конце этих двух функций.

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