成为第一个响应者内存问题

时间:2012-06-17 08:05:54

标签: ios memory-management uitextfield

我有一个隐藏的UITextField,当用户需要从键盘输入一个字符时发送:

[txtField becomeFirstResponder]

此文本字段的编辑事件已更改,然后调用函数来处理输入的内容。

然后,用户选择一个调用以下内容的okay按钮:

txtBox.text = @"";

[txtBox resignFirstResponder ];

我已经跟踪了一直到行[txtField becomeFirstResponder]的一些内存问题。当调用它时,我的应用程序内存使用量在现场翻倍,并且我收到内存警告(即使代码运行)。如果我删除它(当然我没有键盘!)但内存问题消失了。我已阅读并尝试了一些方法,例如在Delegate级别删除键盘但没有成功。我几乎正在创建自己的键盘。

即使它很多,我也可以使用这种增加,只要我解除键盘就可以正常释放 - 但事实并非如此。应用程序的足迹变得越来越重,而对于我的生活,我无法理解为什么。

第一个问题是,上述是否可能导致我的问题?我认为这不太可能。

如果没有,任何建议在哪里寻找/为什么我会得到如此快速的增长?

下面是仪器的屏幕截图 - 红线表示我调用的地方是becomeFirstResponder: http://i.stack.imgur.com/E7PaU.png (他们不会让我上传它 - 对不起!)

1 个答案:

答案 0 :(得分:0)

这不是跟踪内存泄漏/问题的好方法。如果存在内存泄漏,仪器将显示泄漏,并且您可以修复。您不应该假设操作系统会因为您关闭键盘而释放内存(如果有的话,它可能是延迟加载和缓存的)。
虽然我从来没有遇到过这样的问题,但是当您显示键盘时,您的内存占用可能会增加。你没有说实际使用了多少内存,所以我认为它是一个小应用程序,加倍打开键盘应该没问题。
操作系统缓存所有冻结的开放应用程序,因此内存总是很紧张。接收内存警告时,清除可以执行的操作并让操作系统处理其余内容。如果需要,它将杀死后台应用程序。这并不意味着你的应用程序出了问题。