1

显示键盘时,我正面临崩溃。正如Apple docs中所建议的那样,我正在收听从键盘发送的通知,以调整将被键盘覆盖的文本视图的位置。在模拟器会话和调试会话中,应用程序第一次运行并且只有当我第一次点击 texfield 应用程序崩溃时,在控制台中我收到了以下消息:

-[UITextMagnifierCaret keyboardWasShown:]:无法识别的选择器发送到实例 0x3ee2e0 2012-05-02 07:17:49.929 XXXX[316:707] *由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[UITextMagnifierCaret keyboardWasShown:]:无法识别的选择器发送到实例 0x3ee2e0'

这里有一些线索:

  1. 键盘之前在另一个部分中显示
  2. 如果崩溃已经发生,则不会再次发生
  3. 它似乎只在 sim 和设备上的调试过程中出现,而不是在 ad-hoc 中出现
  4. 我的ios版本是5.1
  5. UITextMagnifierCaret 不是应用程序的一个类,但我猜是放大类
4

1 回答 1

1

您将某个对象注册为观察者,然后释放该对象,但观察者仍指向该内存位置。UITextMagnifierCaret 的例外可能是因为曾经分配给观察者的内存位置现在分配给了您不管理的 UITextMagnifierCaret 对象,并且不响应键盘通知。

使用 ARC 可能有助于避免此类问题。通常,请确保将任何指向您将要手动释放的对象的指针设为 nil 或删除。

于 2012-05-02T07:10:52.810 回答