Сбой приложения Objective-C “сообщение отправлено в освобожденный экземпляр 0x ..”

#objective-c #textfield #resignfirstresponder #crash

#objective-c #текстовое поле #отказать первому ответчику #сбой

Вопрос:

у меня есть табличное представление с ячейками, содержащими текстовые поля в нем.

в таблице более 20 строк.

когда я ввожу что-то в текстовые поля и прокручиваю после сбоя моего приложения, я получаю эту ошибку.

 message sent to deallocated instance 
#0  0x00f5e09b in objc_msgSend ()
#1  0x040cfb5a in dyld_stub_strlcat ()
#2  0x001190d6 in -[UIResponder resignFirstResponder] ()
#3  0x000e097f in -[UITextField resignFirstResponder] ()
#4  0x00119293 in -[UIResponder becomeFirstResponder] ()
#5  0x002e1961 in -[UITextInteractionAssistant setFirstResponderIfNecessary] ()
#6  0x002e45e2 in -[UITextInteractionAssistant oneFingerTap:] ()
#7  0x002db4f2 in -[UIGestureRecognizer _updateGestureWithEvent:] ()
#8  0x002d74fe in -[UIGestureRecognizer _delayedUpdateGesture] ()
#9  0x002ddafc in _UIGestureRecognizerUpdateObserver ()
#10 0x002ddce1 in _UIGestureRecognizerUpdateGesturesFromSendEvent ()
#11 0x0007132a in -[UIWindow _sendGesturesForEvent:] ()
#12 0x0006cca3 in -[UIWindow sendEvent:] ()
#13 0x0004fc37 in -[UIApplication sendEvent:] ()
#14 0x00054f2e in _UIApplicationHandleEvent ()
#15 0x01031992 in PurpleEventCallback ()
#16 0x00dd9944 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#17 0x00d39cf7 in __CFRunLoopDoSource1 ()
#18 0x00d36f83 in __CFRunLoopRun ()
#19 0x00d36840 in CFRunLoopRunSpecific ()
#20 0x00d36761 in CFRunLoopRunInMode ()
#21 0x010301c4 in GSEventRunModal ()
#22 0x01030289 in GSEventRun ()
#23 0x00058c93 in UIApplicationMain ()
#24 0x00001cd9 in main (argc=1, argv=0xbffff058) at main.m:14
(gdb) 
  

Я был бы признателен за любую помощь, которую кто-либо может предложить.

Ответ №1:

Эта ошибка возникает при попытке доступа к освобожденному объекту.

Из вашего опубликованного стека кажется, что вы пытаетесь вызвать метод resignFirstResponder of UITextField .

Проверьте все свои UITextField экземпляры или добавьте еще немного исходного кода.