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