Анализ сбоев AFNetworking для EXC_BAD_ACCESS KERN_INVALID_ADDRESS

Я получаю отчеты о сбое AFNetworking, выдающего EXC_BAD_ACCESS KERN_INVALID_ADDRESS:

Thread : Crashed: com.apple.root.default-priority
0  libobjc.A.dylib                0x39e237fa objc_release + 9
1  MY_APP                         0x0015ba63 __64-[AFHTTPRequestOperation setCompletionBlockWithSuccess:failure:]_block_invoke (AFHTTPRequestOperation.m:266)
2  MY_APP                         0x00163bf7 __47-[AFURLConnectionOperation setCompletionBlock:]_block_invoke (AFURLConnectionOperation.m:301)
3  Foundation                     0x3049a2a9 __103+[__NSOperationInternal _observeValueForKeyPath:ofObject:changeKind:oldValue:newValue:indexes:context:]_block_invoke96 + 12
4  libdispatch.dylib              0x3a30b0c3 _dispatch_call_block_and_release + 10
5  libdispatch.dylib              0x3a3107d9 _dispatch_root_queue_drain + 224
6  libdispatch.dylib              0x3a3109c5 _dispatch_worker_thread2 + 56
7  libsystem_pthread.dylib        0x3a43adff _pthread_wqthread + 298

Мне нужна помощь, чтобы понять возможную ошибку. Такое случается иногда, на самом деле очень редко и может быть связано с тайм-аутом, когда пользователь использует 3G (сеть может быть отключена во время загрузки данных).

Я не публикую свой код, потому что не могу найти в журнале сбоев, в каком файле или классе произошел этот сбой, и я использую AFNetworking во многих файлах.


person estemendoza    schedule 10.03.2014    source источник
comment
Вы использовали анализатор Xcode для выявления потенциальных ошибок в вашем коде?   -  person bneely    schedule 11.03.2014
comment
Да, но, как я уже сказал, похоже, это ошибка, которую я не могу воспроизвести, потому что это может быть связано с проблемами сотовой связи.   -  person estemendoza    schedule 11.03.2014


Ответы (1)


Без какого-либо кода это все предположения, но:

Доступ к чему-либо в блоке завершения осуществляется после его освобождения. Обычно это происходит, когда сетевая операция не отменяется после закрытия контроллера представления.

person Kevin    schedule 10.03.2014
comment
Хорошо, спасибо, я проверю, обрабатываю ли я сетевые операции после закрытия представления. - person estemendoza; 11.03.2014
comment
Как отменить сетевую операцию после закрытия контроллера представления? - person shim; 26.04.2014
comment
Зависит от шаблона/архитектуры, которую вы используете, но в простейшей форме сохраните ссылку на созданное соединение. Затем вызовите отмену в нужное время (варьируется, viewDidDisappear может быть хорошим местом для начала) - person Kevin; 28.04.2014