iOS如何确定发送了哪些对象didReceiveMemoryWarning消息?
|
我正在开发一个iPhone应用程序,在该应用程序中,许多UIView是动态添加到主UIWindow和从其中删除的。
在模拟器中模拟内存不足错误时,我发现并非所有视图控制器都收到didReceiveMemoryWarning通知。不幸的是,这些控制器将最受益于实现此方法。
我似乎找不到有关在何处以及如何调用该方法的良好信息。我读过提到它被发送到“所有UIViewControllers”的消息,但事实并非如此。在确实能收到通知的一个类中添加断点也没有特别启发。
这是一个复杂的项目,但是添加这些视图的一种方式是:
- (void) showMyView
{
if(!myViewController){
myViewController = [[MyViewController alloc]init];
[window addSubview:myViewController.view];
}
}
MyViewController是另一个类MySuperViewController的子类,而MySuperViewController本身是UIViewController的子类。这些类别都没有对应的NIB;视图层次结构以编程方式创建。
我正在寻找有关如何诊断问题的指示。
没有找到相关结果
已邀请:
4 个回复
购藏盗码韦
是特例,因为窗口可以自动知道视图的控制器并将消息正确定向到控制器。 但是,当您从
分离视图时,视图控制器也会被分离,并且不再由ѭ2managed进行管理。我认为这是问题的根源。 我建议您添加一个导航控制器或选项卡栏控制器作为您的根视图控制器,并使用该视图控制器功能在子控制器之间切换。请注意,切换时不应删除视图控制器,这样它们将能够正确接收消息。 如果视图控制器的初始化很简单并且不占用太多时间,则您还可以考虑在不使用视图控制器时释放它。
田损比报
唯一安全的地方是6英镑。 在其他任何地方,您都应指定要取消注册的通知(如果您注册与superlcass相同的通知,则仍然有可能中断)。
宠封钞轰
的工作原理,但知道谁注册了
。它可能是这样设置的:
有关更多信息,您可以查看UIViewController类参考中的“内存管理”部分。
破弯
使用回调方法:
另外,请确保您的自定义类继承自NSObject,否则您将收到此错误: