2012-05-16 4 views
0

В приведенном ниже коде есть около 3 МБ утечки. Если я удалю [self.view addSubview:progressDialog]; , тогда их нет утечки.Утечка памяти в MBProgressHUD

-(void)showProgressDialog:(NSString*)title setTimer:(BOOL)isTimerSet 
    { 
     progressDialog = [[MBProgressHUD alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]; 
     [progressDialog setLabelText:title]; 
     progressDialog.dimBackground=YES; 
     [self.view addSubview:progressDialog];//Leak is here 
     [progressDialog show:YES]; 
    } 

    -(void)hideProgressDialog 
    { 
     if(progressDialog !=nil) 
     { 
      [progressDialog hide:YES]; 
      [progressDialog removeFromSuperview]; 
      [progressDialog release]; 
      progressDialog = nil; 
     } 
    } 

Помогите.

ответ

0

вы не отпуская его progressDialog или, если это Ивар, а затем использовать свойство вместо Ивар, и синтезировать его, а затем следовать этой Approch

MBProgressHUD *obj = [[MBProgressHUD alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]; 
    self.progressDialog=obj; 
    [obj release]; 

как этот

MBProgressHUD *obj = [[MBProgressHUD alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]; 
    self.progressDialog=obj; 
    [obj release];   
    [self.progressDialog setLabelText:title]; 
    self.progressDialog.dimBackground=YES; 
    [self.view addSubview:self.progressDialog];//Leak is here 
    [self.progressDialog show:YES]; 
+0

На самом деле утечка в CGRectMake, т.е. initWithFrame: CGRectMake() –

+0

Этот метод init возвращает объект с приращением удерживания, который хранится в процессеDialog, и в следующий раз, если вы нажмете кнопку, он снова увеличит один, не отпуская его. если вы отпустите его. я надеюсь, что это будет разрешено. – Saad

+0

Я выпустил его в методе hideProgressDialog. –