使用UITextField释放UIViewController时的内存问题

问题描述:

我对包含文本字段的视图控制器存在一些内存问题。使用UITextField释放UIViewController时的内存问题

小结:

  • 点击一个按钮,我的应用程序模态呈现UIViewController(我称之为 “VC1”)。
  • 从VC1开始,用户可以选择打开(使用pushViewController)a UITableViewController(“VC2”)并返回。
  • 从VC1开始,用户可以选择打开(使用pushViewController)a UIViewController(“VC3”)并返回。
  • 最后用户可解除VC1

VC2和VC2在VC1引用作为属性和它们必须保持在存储器中。当用户解除VC1然后我释放所有。

VC3包含一个简单视图,只有一个UITextField,becomeFirstResponderviewWillAppear被调用时。

问题:

当我打开VC1,然后VC2,回头和罢免:这一切都OK,应用程序返回到“现场字节”相同的初始量(即1,20MB)。当我打开VC1,然后打开VC3时,字节变为2MB。当我写的文本字段里面的东西分配上升到2,50MB

  1. 在这一瞬间仪器发现16字节与校对内存泄漏作为负责任的图书馆和PRRfInit作为负责任的来电

  2. 义无反顾地后VC1和解聘的分配仍然2,50MB 排序按类别仪器我检查了VC1,VC2和VC3有0字节直播,但总体仍有2,50MB

是一个还涉及到键盘?

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

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

而一个来自图书馆的16byte泄漏是相当无关紧要的(假设它只发生一次) - 苹果公司的图书馆最终泄漏的数量超过了我的经验。

有很多更好的方法来消磨时间;)

PS是校对这就是苹果的SDK的一部分已包含一个库或一个?

+0

Emh ...现在我只是在模拟器上开发和测试,由于设备不可用... 我会尝试尽快在真实设备上进行测试。我觉得奇怪的是,为什么弹出键盘并在文本字段中写入意味着增加1MB,这是永远不会释放的。 PS:我认为ProofReader是SDK的一部分 – user370773 2010-07-08 17:01:10

+0

那1MB可能是键盘的UI?它会将它保存在内存中,以备再次显示 - 如果它已经在内存中,它可以更快地响应!如果需要内存,它可以稍后释放它 - 这不是泄漏,而是优化! – deanWombourne 2010-07-09 12:11:00