2012-05-02 4 views
1

Я столкнулся с этим сбоем, пока отображается клавиатура. Как было предложено в документах Apple, я слушаю уведомление, отправленное с клавиатуры, чтобы отрегулировать положение текстового представления, которое было бы покрыто клавиатурой. В тренажере сессии и сеанс отладки в первый раз, когда приложение работает, и только в первый раз, когда я нажимаю на texfield сбои приложений, в консоли я получил это сообщение:
Сбой при показе клавиатуры только при первом запуске приложения

- [UITextMagnifierCaret keyboardWasShown]: непризнанный селектор направлен например 0x3ee2e0 2012-05-02 07: 17: 49,929 XXXX [316: 707] * Согласующего приложение из-за неперехваченный исключения 'NSInvalidArgumentException', причина: «- [UITextMagnifierCaret keyboardWasShown: ]: отправленный нераспознанный селектор к примеру 0x3ee2e0 '

Вот несколько подсказок:

  1. клавиатура была показать, прежде чем в другом разделе
  2. аварии nevr происходит снова, если это уже произойдет
  3. , кажется, чтобы показать только во время отладки на сима и устройства , но не в Времнной
  4. Моя ИОС версия 5.1
  5. UITextMagnifierCaret не класс приложения, но я предполагаю, что это класс magnigfing
+1

Найденное решение, я забыл удалить объект в качестве наблюдателя до его освобождения. Поэтому, когда было отправлено уведомление, оно было отправлено также зомби. Я не могу объяснить, что такое сделка с UITextMagnifierCaret. Тот факт, что это происходило только в первый раз, - это то, что другому текстовому полю был показан только первый доступ к приложению. Если кто-то хочет написать ответ о важности удаления наблюдателей, я его приму. – Andrea

ответ

1

Вы зарегистрировали некоторый объект в качестве наблюдателя, а затем освободили объект, но наблюдатель все еще указывал на это место памяти. Исключение из UITextMagnifierCaret, вероятно, связано с тем, что ячейка памяти, выделенная для вашего наблюдателя, теперь выделена объекту UITextMagnifierCaret, который вы не управляете, и это не отвечает на уведомление клавиатуры.

Использование ARC могло помочь избежать такого рода проблем. Как правило, убедитесь, что nil или удалить любые указатели на объект, который вы собираетесь выпустить вручную.

Смежные вопросы