1

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

[txtField becomeFirstResponder]

这个文本字段有一个编辑事件发生变化,然后调用一个函数来处理我需要的输入内容。

然后用户选择一个ok按钮,调用以下命令:

txtBox.text = @"";

[txtBox resignFirstResponder ];

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

即使它很多,我也可以使用这种增加,只要我关闭键盘后它会正确释放 - 但事实并非如此。该应用程序的足迹越来越重,对于我的生活,我无法弄清楚为什么。

第一个问题是,上面是否有可能导致我出现问题?我认为这不太可能。

如果没有,有什么建议可以去哪里看/为什么我会收到如此快速的增长?

这是 Instruments 的截图 - 红线表示我调用 becomeFirstResponder 的位置:http://i.stack.imgur.com/E7PaU.png 他们不会让我上传它 - 抱歉!)

4

1 回答 1

0

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

于 2012-06-17T14:04:39.873 回答