我有一个隐藏的UITextField,当用户被要求从键盘输入一个字符时,会发送:
[txtField becomeFirstResponder]这个文本字段有一个关于编辑更改的事件,然后调用一个函数来处理输入的内容,以满足我的需要。
然后,用户选择一个okay按钮,该按钮调用以下内容:
txtBox.text = @"";
[txtBox resignFirstResponder ];我一直跟踪一些内存问题,一直到[txtField becomeFirstResponder]行。当这个函数被调用时,我的应用程序的内存使用量会增加一倍,并且我会收到一个内存警告(即使代码正在运行)。如果我把它取下来(当然我没有键盘!)但是内存问题就消失了。我已经阅读并尝试了一些方法,比如在委托级移除键盘,但都没有成功。我几乎要创建自己的键盘了。
尽管增加了很多,但只要我不再使用键盘,它就会得到适当的释放--但事实并非如此。这款应用的足迹越来越重,我终生也搞不懂其中的原因。
第一个问题是,有没有可能是上面的问题导致了我的问题?我想这不太可能。
如果没有,有什么建议可以看/为什么我会收到如此快速的增长?
这是Instruments的屏幕截图-红线指示我调用becomeFirstResponder:http://i.stack.imgur.com/E7PaU.png的位置(他们不让我上传-抱歉!)
发布于 2012-06-17 22:04:40
这不是跟踪内存泄漏/问题的好方法。如果有一个内存泄漏,仪器将显示一个泄漏,您可以修复。你不应该仅仅因为你关闭了键盘就认为操作系统会释放内存(如果有的话,它可能是延迟加载和缓存的)。
虽然我从来没有遇到过这样的问题,但当您显示键盘时,您的内存占用可能会增加。你没有说实际使用了多少内存,所以我假设它是一个小应用程序,打开键盘时加倍就可以了。
操作系统会缓存所有冻结的打开应用程序,因此内存总是很紧张。当收到内存警告时,请清除您能做的事情,并让操作系统处理剩下的事情。如果需要,它将杀死后台应用程序。这并不意味着你的应用程序出了问题。
https://stackoverflow.com/questions/11069844
复制相似问题