2012-05-16 70 views
0

在下面的代碼中有大約3MB的泄漏。如果我刪除[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或者如果它是伊娃,然後使用屬性,而不是伊娃和合成它,然後按照這個計算策略

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方法返回一個對象,其中有一個retaincount增量存儲在progressDialog中,下一次如果再次按下按鈕則增加一個,而不釋放它。如果你釋放它。我希望它能解決 – Saad

+0

我在hideProgressDialog方法中釋放它。 –