Ваше приложение может быть уничтожено, если оно использует слишком много памяти, если оно не вызывает endBackgroundTask:
, когда вызывается обработчик истечения (указанный при вызове beginBackgroundTaskWithExpirationHandler:
), если пользователь явно убивает его, если приложение выдает исключение, вызывает exit
, запускает EXC_BAD_ACCESS или другой сигнал и так далее. Возможно, есть и другие причины.
Чтобы избежать этого, не используйте слишком много памяти, при необходимости вызовите endBackgroundTask:
, создайте приложение, которое пользователи не захотят убивать, и не выбрасывайте исключения, вызовите exit
, получите доступ к недопустимым ячейкам памяти и т. д.
Нет способа надежно активировать «пользователь явно убивает приложение». Для остальных вы можете выделить тонны памяти, отказаться от вызова endBackgroundTask:
, использовать [NSException raise:... format:...]
, вызвать exit
или создать случайные указатели мусора и следовать им. Вы, вероятно, не должны делать ничего из этого.