有没有人可以帮我或解释更多?
我最小化了我的代码,使用一个按钮来分配并将UIPickerView添加到self.view中。通过按下相同的按钮,UIPickerView将从self.view中移除并释放。
在每次删除UIPickerView时,我使用了一个带有Instrutments的HeapShot。我发现有时候,在堆增长中有0字节的变化,4xx字节,... 2K字节和4K字节。没有泄漏(红色条)。
实际上,我担心的是当Heap使用量越来越大时。最后,我的应用程序会崩溃,现在就是这种情况。当我拍了25次照片并提交到我的服务器上时,堆增长到1xMB(通过Instructments检查没有明显的泄漏。
还有什么建议吗?
这是我的按钮代码。我的分配和释放似乎是正确的
- (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;
}发布于 2011-12-21 04:44:18
UIPickerView很有个性。就像UIWebView一样,你不想太频繁地创建这些东西,即使你后来把它们扔掉了。这不是一个漏洞,但你的堆将会上升。
您的问题的解决方案可能是只创建一次选取器,并保留它以供重用,只有在拆卸父视图控制器时才丢弃它。
https://stackoverflow.com/questions/8572204
复制相似问题