Запрет EXC_BAD_ACCESS во время фоновой обработки для длительных процессов - PullRequest
0 голосов
/ 13 октября 2018

В моем приложении есть ряд длительных процессов.Иногда, когда приложение становится фоновым, один из этих процессов возвращается и пытается уведомить другие объекты (которые были освобождены) о том, что оно завершено, вызывая EXC_BAD_ACCESS.Что-то вроде:

[process runForALongTimeWithCompletion:^(){
  [possiblyReleasedObject heyTheProcessFinished];
}];

Как я могу проверить, был ли выпущен possiblyReleasedObject?Или, точнее, в моем случае, как я могу проверить, поддерживает ли он разыменование, чтобы ссылка на него не вызывала ошибку EXC_BAD_ACCESS?

1 Ответ

0 голосов
/ 13 октября 2018

Нет способа (безопасно) проверить, указывает ли указатель на объект на допустимое место в памяти в Objective-C.Вам нужно будет структурировать вашу программу так, чтобы объекты, содержащие указатель на possiblyReleasedObject, сохраняли ее, чтобы она не была случайно выпущена.

Когда объект, содержащий указатель на possiblyReleasedObject, больше не нуждается в этом, обычно рекомендуется установить указатель на nil после вызова release, чтобы избежать случайного разыменования неверного указателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...