我的一个 UIViewController
有几个 subview Controller 。它们是在界面构建器中构建的,通过将 NSObject
拖到左侧的“对象”部分,然后将我自己的 SpecialViewController
作为“自定义类”放入。有了这个设置,在 viewDidLoad
我将准备好我的 View 和 Controller 。以下屏幕截图建议了工作流程:
在我的实现中,我有:
@interface ParentController : UIViewController
{
SpecialViewController *svc;
}
@property (nonatomic, retain) IBOutlet SpecialViewController *svc;
据我了解,在 didReceiveMemoryWarning
期间我应该释放自己的资源。然后在 viewDidUnload
期间将 IBOutlets
设置为 nil。
我在模拟器中模拟低内存时崩溃,调试器在 SpecialViewController
的 didReceiveMemoryWarning
处暂停(其主体只是 [super didReceiveMemoryWarning];
),错误 EXC_BAD_ACCESS (code=1, address=0xe0000008)
。此时父 Controller 是不可见的,因此可以安全释放。
父 Controller 在didReceiveMemoryWarning
中也只包含[super didReceiveMemoryWarning];
。我在两个类中都尝试了 niling IBOutlets
。它没有帮助。
知道为什么会这样吗?
我的目标是带有 ARC 的 iOS 4 和 5。 SpecialViewController
是 UITableViewController
的子类。
通过跟踪,发现ParentController didReceiveMemoryWarning
在SpecialViewController
之前被调用。
您似乎在此处的 View Controller 中有一个 View Controller 。您选择创建这样的类(class)有什么特别的原因吗?根据我的经验,每个 UIViewController 都应该是一个单独的子类。基于 didReceiveMemoryWarning
中出现您的错误这一事实,我认为问题出在其他地方。可以分享一下这个 View Controller 的初始化代码吗?
如果您正在尝试 UIViewController Containment 之类的操作,您可能应该查看涵盖此过程的 WWDC 主题。
关于iphone - 正确处理 didReceiveMemoryWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10429235/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |