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