Загрузка Утечки памяти анимации

Я записал класс сети, который справляется со всеми сетевыми вызовами для моего приложения. Существует два метода showLoadingAnimationView и hideLoadingAnimationView это покажет, что UIActivityIndicatorView в представлении по моему текущему viewcontroller с исчезают фон. Я получаю утечки памяти где-нибудь на этих двух методах. Вот код

-(void)showLoadingAnimationView
{ 
    textmeAppDelegate *textme = (textmeAppDelegate *)[[UIApplication sharedApplication] delegate];
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
    if(wrapperLoading != nil)
    {
        [wrapperLoading release];
    }
    wrapperLoading = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 480.0)];
    wrapperLoading.backgroundColor = [UIColor clearColor];
    wrapperLoading.alpha = 0.8;

    UIView *_loadingBG = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 480.0)];
    _loadingBG.backgroundColor = [UIColor blackColor];
    _loadingBG.alpha = 0.4;

    circlingWheel = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    CGRect wheelFrame = circlingWheel.frame;
    circlingWheel.frame = CGRectMake(((320.0 - wheelFrame.size.width) / 2.0), ((480.0 - wheelFrame.size.height) / 2.0), wheelFrame.size.width, wheelFrame.size.height);
    [wrapperLoading addSubview:_loadingBG]; 
    [wrapperLoading addSubview:circlingWheel];
    [circlingWheel startAnimating];
    [textme.window addSubview:wrapperLoading];
    [_loadingBG release];
    [circlingWheel release];
}

-(void)hideLoadingAnimationView
{   
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
    wrapperLoading.alpha = 0.0;

    [self.wrapperLoading removeFromSuperview];
    //[NSTimer scheduledTimerWithTimeInterval:0.8 target:wrapperLoading selector:@selector(removeFromSuperview) userInfo:nil repeats:NO];
}

Вот то, как я называю эти два метода

[NSThread detachNewThreadSelector:@selector(showLoadingAnimationView) toTarget:self withObject:nil];

и затем где-нибудь позже в коде я использую следующий вызов функции скрыть анимацию.

[self hideLoadingAnimationView];

Я получаю утечки памяти, когда я вызываю функцию showLoadingAnimationView. Что-то не так в коде или является там какой-либо лучшей техникой для показа загружающейся анимации, когда мы делаем сетевые вызовы?

1
задан Ayaz Alavi 18 June 2010 в 07:15
поделиться

1 ответ

Метод showLoadingAnimationView возвращает неавтоматически выпущенное представление (keepCount -> 1), которое вы позже (я предполагаю) добавляете в другое представление (keepCount -> 2) .

В hideLoadingAnimationView вы удаляете только представление из его супервизора (keepCount -> 1). В этом методе отсутствует выпуск . Это означает, что вы не должны вызывать release в showLoadingAnimationView .

2
ответ дан 2 September 2019 в 23:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: