- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在事件处理程序上弹出 Popover Controller 。每次调用此事件处理程序时,我的应用程序的内存占用量都会增加。一旦我关闭 View Controller ,我期望内存占用量会减少,但它永远不会发生。
我使用 Instruments 中的分配工具来分析内存。
我在这里做错了什么吗?
-(IBAction)createNewAccount :(id) sender
{
GSNewAccountViewController *createNewAccountVC = [[GSNewAccountViewController alloc]initWithNibName:@"GSNewAccountViewController" bundle:nil];
UIPopoverController *popover =
[[UIPopoverController alloc] initWithContentViewController:createNewAccountVC];
popover.popoverContentSize = CGSizeMake(kScrollViewWidth, kScrollViewHeight);
[popover presentPopoverFromRect:CGRectMake(770,-420,320,480) inView:self.view permittedArrowDirections: UIPopoverArrowDirectionUp animated:YES];
popover.delegate = self;
[createNewAccountVC release];
}
- (void)popoverControllerDidDismissPopover:
(UIPopoverController *)popoverController {
[popoverController release];
}
更新:
我正在其 ViewDidUnload 方法中释放 GSNewAccountController 的所有 Outlet。但即使当我关闭 Popovercontroller 时,vieUnDIdload 方法也不会被调用
最佳答案
您应该检查在 popoverController 释放时您的 GSNewAccountViewController 是否也被释放。检查事件 GSNewAccountViewController 对象的数量,而不是监视事件字节数。要在“分配工具”中执行此操作,请转到“工具”窗口的右上角,通过在文本字段中键入 GSNewAccountViewController 来过滤分配。然后检查每次触发 IBAction 时会发生什么。当您触发 IBAction 时,生活数应变为 1,并在释放 popoverController 时返回到零。
如果事件 GSNewAccountViewController 对象的数量永远不会为零,您应该检查是否在 GSNewAccountViewController 类中创建了某种类型的保留周期,从而阻止调用 dealloc 和 viewDidUnload 方法。通过保留周期,GSNewAccountViewController 会保留一个对象,而该对象又会保留您的 GSNewAccountViewController。由于两者都互相保留,因此不会调用它们的 dealloc 方法,并且对象永远不会被销毁。
为了进行测试,尝试创建一个非常简单的 iPad 项目,在主视图上有一个按钮,并使用 IBAction 来呈现一个 popoverController,其中包含一个从带有 UITableViewController 的普通子类的 NIB 加载的 viewController。查看分配工具,它显示当显示 popoverController 时正在创建子类,并在关闭 popoverController 时销毁子类。
祝你好运
关于ios - UIPoverController 每次使用时都会创建实时字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8375678/
我是一名优秀的程序员,十分优秀!