Rog*_*nns 2 xcode objective-c ios
我CTCallCenter在启动后创建了一个实例(alloc/init).永远不会调用事件处理程序(既不是NSLog也不是breakpoint火).如果我稍后询问它当前的调用它返回nil.如果我同时打电话[[[CTCallCenter alloc] init] currentCalls],那么它确实会回电话.
作为示例,当一个调用处于活动状态时(我将应用程序带回到前台并且计时器稍后被触发)这里是一个NSLog显示长期存在的CTCallCenter实例,它返回currentCalls的内容以及新的瞬态实例返回的内容:
CTCallCenter(0x1e5639c0): {
server_connection: 0x1e5640e0 currentCalls: {(
)} callEventHandler: 0xa0c90
}
(null)
{(
CTCall (0x1e5a0fb0) {
callState: [CTCallStateIncoming]
Call ID: [1EB2A082-4A12-48C2-A76C-2244F8F402EE]
}
)}
Run Code Online (Sandbox Code Playgroud)
很明显,有一个处理程序注册,并且长期存在的实例认为没有调用.我很高兴总是使用瞬态实例来获取调用列表,但我真的需要触发事件处理程序.
我找到了答案.在[[CTCallCenter alloc] init]必须在主队列中运行.我在自定义串行调度队列中运行它.据推测,CTCallCenter代码正在对当前队列执行某些操作,或者可能需要运行循环.
如果你执行主队列的alloc/ init外部,那么如果立即调用currentCalls它将是正确的,但是数据永远不会更新,事件处理程序也不会触发.文档中没有提到这一点,也没有提交errors或提出异常.
| 归档时间: |
|
| 查看次数: |
1021 次 |
| 最近记录: |