2

我正在开发一个必须与电话状态同步的 iPhone 应用程序。我目前正在播放音频和/或与外部附件通信,以便我的应用程序可以在后台运行。因此,当有电话时,我会显示一个视图,告诉用户正在拨打电话。我正在使用 CTCallCenter(在我的 appDelegate 中使用实例变量)来响应电话状态,并且每次测试是否有电话时我都会分配该实例。Bur 每次分配该实例时,有时我会遇到关于“CUTWeakReference”类的奇怪崩溃。我想知道当应用程序处于后台或被挂起以防止发生崩溃时,是否有使用 CTCallCenter 的最佳做法?谢谢

4

1 回答 1

0

解决问题需要考虑的要点。

有一个 iOS 错误会导致CTCallCenter类的实例在它们被释放后有时会收到通知。而不是实例化、使用和释放实例,您必须保留而不是释放它们来解决错误。

[[CTCallCenter alloc] init]必须在主队列中运行。它是线程安全的吗???最好只在主线程上调用它。

static CTCallCenter *netInfo; static dispatch_once_t dispatchToken; 
if (!netInfo) {
    dispatch_once(&dispatchToken, ^{ 
        netInfo = [[CTCallCenter alloc] init]; 
    }); 
}
于 2016-08-24T10:46:19.923 回答