未知的堆增长

时间:2011-12-20 07:44:48

标签: iphone ios4 ios5

有没有人可以帮助我或解释更多?

我最小化我的代码以使用按钮来分配和添加UIPickerView到self.view。通过按下相同的按钮,UIPickerView将从self.view中删除并释放。

每次删除UIPickerView时,我都会使用Instrutments进行HeapShot。我发现有时候,堆增长中有0字节更改,4xx字节,... 2K字节和4K字节。没有泄漏(RED BAR)。

实际上,我担心的是当堆使用量越来越大时。最后,我的应用程序会崩溃,现在就是这样。当我做了25次拍照并提交到我的服务器时,堆增长到1x MB(通过检查教学没有明显的泄漏。

还有其他建议吗?

以下是我的按钮代码。我的分配和发布似乎是正确的

- (void) nextButtonClicked {
    if (!pickerShown) {
        UIPickerView *pickervTemp = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 200.0, 320.0, 216.0)];
        self.locationPicker = pickervTemp;
        [pickervTemp release];
        [_locationPicker setDelegate:self];
        [_locationPicker setShowsSelectionIndicator:YES];
        [self.view addSubview:_locationPicker];
        pickerShown = YES;
    } else {
        pickerShown = NO;
        [_locationPicker removeFromSuperview];
        [_locationPicker release];
        _locationPicker = nil;
    }

    return;
}

1 个答案:

答案 0 :(得分:0)

UIPickerView有个性。就像UIWebView一样,即使你之后扔掉它们,你也不想经常创造它们。它不是泄漏,但你的堆会上升。

您的问题的解决方案可能是只创建一次选择器并保留它以便重新使用,只有在拆除父视图控制器时才丢弃它。