Сбой CTCallCenter

Я разрабатываю приложение для iPhone, которое должно синхронизироваться со статусами телефонных звонков. В настоящее время я воспроизводю аудио и/или общаюсь с внешним аксессуаром, поэтому мое приложение может работать в фоновом режиме. Поэтому, когда есть телефонный звонок, я показываю представление, сообщающее пользователю, что происходит телефонный звонок. Я использую CTCallCenter (используя переменную экземпляра в моем appDelegate), чтобы отвечать на статусы телефонных звонков, и я выделяю этот экземпляр каждый раз, когда проверяю, есть ли телефонный звонок или нет. Но при выделении этого экземпляра каждый раз иногда я получаю странный сбой, связанный с классом CUTWeakReference. Я хочу знать, есть ли наилучшая практика использования CTCallCenter, когда приложение находится в фоновом режиме или приостановлено, чтобы предотвратить этот сбой? Спасибо


person rokridi    schedule 08.10.2013    source источник


Ответы (1)


Что необходимо учитывать при устранении проблемы.

Существует ошибка iOS, из-за которой экземпляры класса CTCallCenter иногда получают уведомления после того, как они были освобождены. Вместо создания, использования и выпуска экземпляров вы должны сохранять и никогда не выпускать их, чтобы обойти ошибку.

[[CTCallCenter alloc] init] должен выполняться в основной очереди. Это потокобезопасно ??? Лучше вызывать его только в основном потоке.

static CTCallCenter *netInfo; static dispatch_once_t dispatchToken; 
if (!netInfo) {
    dispatch_once(&dispatchToken, ^{ 
        netInfo = [[CTCallCenter alloc] init]; 
    }); 
}
person Praveen Matanam    schedule 24.08.2016