【发布时间】:2012-09-29 16:41:32
【问题描述】:
如何使用 ARC 有效地释放模态视图控制器的内存?
我看到了一些关于这个主题的主题,但实际上我没有找到任何答案来解决处理模态视图控制器时看似常见的问题。
我制作了一个示例应用程序,其中 viewcontroller1 以模态方式呈现 viewcontroller2。 当我关闭 viewcontroller2(从 viewcontroller1)时,内存没有释放! :((见下面的内存日志)
奇怪:viewcontroller1中没有对viewcontroller2的强引用,确实调用了viewcontroller2的dealloc……
使用 presentModalViewController/dismissModalViewControllerAnimated 呈现/关闭视图控制器
查看我的内存使用情况:
ViewController1 显示:7.41 Mb 使用情况
--ACTION : 显示 ViewController2--
ViewController2 显示:8.11 Mb 使用情况
--ACTION : 关闭 ViewController2--
ViewController1 显示:8.06 Mb 使用情况
--ACTION : 显示 ViewController2--
ViewController2 显示:8.11 Mb 使用情况
--ACTION : 关闭 ViewController2--
ViewController1 显示:8.06 Mb 使用情况
--ACTION : 显示 ViewController2--
ViewController2 显示:8.11 Mb 使用情况
--ACTION :关闭 ViewController2--
ViewController1 显示:8.06 Mb 使用情况
谢谢
【问题讨论】:
-
你是如何计算内存使用量的?
-
我用这个:
struct task_basic_info info; mach_msg_type_number_t size = sizeof(info); kern_return_t kerr = task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t)&info, &size); double sizeInMegaBytes = (double)info.resident_size / 1000000; -
与 Instruments -> Activity Monitor -> Real Memory Usage 中的值相同
标签: iphone ios uiviewcontroller modalviewcontroller