1

我有这个代码

 -(void)didPressButton:(int)tag
    {
        // Preventivi?
        if (tag == 0)
        {
            if (addPrev == nil)
                addPrev = [[avvAddPreventivoViewController alloc] init];
            addPrev.delegate = self;
            UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:addPrev];
            navigationController.navigationBarHidden     = NO;
            [[navigationController navigationBar] setBarStyle:UIBarStyleBlack];
            [self presentViewController:navigationController animated:YES completion:nil];
            addPrev = nil;

        }
    }

炫耀时addPrev内存增加,炫耀时内存不释放。当addPrev解雇时,它会触发一个协议方法,didCancel. 我拦截它并释放addPrev

  -(void)didCancel
    {
        [self dismissViewControllerAnimated:YES completion:nil];
         addPrev = nil;
    }

在此处输入图像描述

4

1 回答 1

1

Niling 也是导航控制器极大地改进了内存分配。此外,请注意释放您可以在推送控制器的 dealloc 中释放的内容。

-(void)didPressButton:(int)tag
    {
        // Preventivi?
        if (tag == 0)
        {
            if (addPrev == nil)
                addPrev = [[avvAddPreventivoViewController alloc] init];
            addPrev.delegate = self;
            UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:addPrev];
            navigationController.navigationBarHidden     = NO;
            [[navigationController navigationBar] setBarStyle:UIBarStyleBlack];
            [self presentViewController:navigationController animated:YES completion:nil];
            addPrev = nil;
            navigationController = nil;

        }
    }
于 2014-01-08T19:48:51.903 回答