Я разрабатываю приложение для iPhone, которое должно синхронизироваться с статусами телефонных звонков. В настоящее время я воспроизвожу аудио и/или связь с внешним аксессуаром, поэтому мое приложение может работать в фоновом режиме. Поэтому, когда есть телефонный звонок, я показываю, что пользователь говорит, что происходит телефонный звонок. Я использую CTCallCenter (используя переменную экземпляра в приложении appDelegate), чтобы отвечать на статусы телефонных звонков, и я распределяю этот экземпляр каждый раз, когда я проверяю, есть ли телефонный звонок или нет. Bur при распределении этого экземпляра каждый раз, иногда я получаю странный сбой относительно класса CUTWeakReference. Я хочу знать, есть ли практика использования CTCallCenter, когда приложение находится в фоновом режиме или приостановлено, чтобы предотвратить этот сбой? СпасибоCTCallCenter crash
2
A
ответ
0
Вопросы, которые следует учитывать, чтобы исправить проблему.
Существует ошибка iOS, которая вызывает экземпляры класса CTCallCenter
, чтобы иногда получать уведомления после того, как они были освобождены. Вместо того, чтобы создавать экземпляры, использовать и выпускать экземпляры, вы должны вместо этого сохранять и никогда не выпускать их для обхода ошибки.
[[CTCallCenter alloc] init]
должен быть запущен в основной очереди. Это поточно-безопасный ??? Лучше назовите его только на основной теме.
static CTCallCenter *netInfo; static dispatch_once_t dispatchToken;
if (!netInfo) {
dispatch_once(&dispatchToken, ^{
netInfo = [[CTCallCenter alloc] init];
});
}