NSMutableArray元素未在dealloc中释放

时间:2011-07-21 03:41:46

标签: iphone cocoa-touch nsmutablearray

我在.h文件中定义了一个NSMutableArray

NSMutableArray *arrayBatLevel;

在.m文件中初始化

- (void)viewDidLoad {
    [super viewDidLoad];
    [self DataTimer];
}

-(void)DataTimer
{
    [recordDataTimer invalidate];
    recordDataTimer = [NSTimer scheduledTimerWithTimeInterval:[timeInterval.text floatValue]
                                                       target:self
                                                     selector:@selector(recordData)
                                                     userInfo:nil
                                                      repeats:YES];
}

-(void)recordData
{
    if ([aSwitch isOn] == YES) {
        if (arrayBatLevel == nil) {
            arrayBatLevel = [[NSMutableArray alloc] init];
            NSLog(@"alloc arrayBatLevel");
        }

        [arrayBatLevel addObject:batLevel.text];
    }
}

并以dealloc发布

- (void)dealloc {
    [arrayBatLevel release];   
    [super dealloc];
}

但是,它似乎没有释放NSMutableArray内的所有对象。 当我退出这个应用程序并运行它获得时,这些对象仍然在NSMutableArray中,为什么?

1 个答案:

答案 0 :(得分:1)

您的问题不在于数组,而在于数组中的对象。你没有指出“batLevel”的来源。我猜测“batLevel”会保留在其他地方,并使用它“batLevel.text”。