使用UITextField释放UIViewController时出现内存问题

时间:2010-07-08 14:53:00

标签: ios objective-c memory-management

我对包含文本字段的视图控制器存在一些内存问题。

摘要:

  • 点击按钮,我的应用程序以模态方式显示UIViewController(我称之为“VC1”)。
  • 从VC1用户可以选择打开(使用pushViewControllerUITableViewController(“VC2”)并转回。
  • 从VC1开始,用户可以选择打开(使用pushViewControllerUIViewController(“VC3”)并转回。
  • 最后用户可以解雇VC1

VC1和VC2在VC1中作为属性引用,它们必须保留在内存中。当用户解散VC1然后我释放所有。

VC3包含一个简单视图,只有一个UITextField在becomeFirstResponder被调用时viewWillAppear

的问题:

当我打开VC1然后打开VC2时,转回并解雇:一切正常,应用程序返回相同的初始“活字节数”(即1,20MB)。当我打开VC1然后打开VC3时,字节变为2MB。当我在文本字段中写入内容时,分配上升到2,50MB

  1. 此时,仪器发现内存泄漏为16byte,ProofReader为负责人库,PRRfInit为负责人,

  2. 转回VC1并解雇后,分配仍为2,50MB 在仪器中按类别排序我检查VC1,VC2和VC3有0个活字节,但总体仍然是2,50MB

  3. 还涉及键盘吗?

1 个答案:

答案 0 :(得分:1)

我假设你在设备上进行测试,而不是模拟器 - 模拟器会产生不正确的结果。

你的应用程序使用的总内存作为内存泄漏的衡量标准毫无意义 - 在有空闲内存的情况下,iPhone将尝试缓存尽可能多的数据 - 它会加载库并将它们留在内存中以防万一将再次使用它们。这只是一个问题,当你开始用完,然后它会为你排序。

来自库的16byte泄漏是相当无关紧要的(假设它只发生一次) - Apple的库最终泄漏的次数超过了我的经验。

有很多更好的方法可以花时间;)

PS ProofReader是您所包含的库还是Apple SDK的一部分?