iOS4 - 快速上下文切换

Sun*_*nil 6 iphone context-switching ios4

当应用程序进入后台运行状态时,有多少脏内存使用是好的.在苹果视频中,我们提到应尽可能减少脏记忆.

但在我的应用程序中,我使用导航控制器来推送和弹出视图.从大约20个不同页面移动后,脏内存使用量达到30 MB左右.

同样在"dismissModalViewControllerAnimated"和"popViewControllerAnimated"上,不调用dealloc.

我有两个疑问:

  1. 上线可以接受多少脏内存?
  2. 什么是导航控制器的替代支持后退按钮?

提前致谢.

Zac*_*ing 4

如果未调用 dealloc,您可能仍会保留 UIViewController。

也许您在这些 UIViewController 中设置委托或其他类来保留并引用备份树(循环引用)。

调试此问题的一种方法是在 UIViewController 中重载保留和释放,并设置断点并记录保留计数。

这是我留下的一个神奇的片段,当我不明白为什么我仍然保留某些东西时,它对我有很大帮助。

- (id)retain
{
    NSLog(@"retain \t%s \tretainCount: %i", __PRETTY_FUNCTION__ , [self retainCount]);
    return [super retain];
}
- (void)release
{
    NSLog(@"release \t%s \tretainCount: %i", __PRETTY_FUNCTION__ , [self retainCount]);
    [super release];
}
- (id)autorelease
{
    NSLog(@"autorelease \t%s \tretainCount: %i", __PRETTY_FUNCTION__ , [self retainCount]);
    return [super autorelease];
}
Run Code Online (Sandbox Code Playgroud)

__PRETTY_FUNCTION__是 CLang 中的一个特殊隐藏宏,它以 char 数组的形式提供漂亮的 Objective-C 函数名称。