0

以下のコードでは、約 3MB のリークがあります。削除する[self.view addSubview:progressDialog]; と、リークはありません。

    -(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;
        }
    }

助けてください。

4

1 に答える 1

0

プログレスダイアログをリリースしていないか、ivarの場合は、ivarの代わりにプロパティを使用して合成し、このアプローチに従ってください

   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];
于 2012-05-16T07:44:23.053 に答える