如果未设置断点,则不会调用CTCallState事件处理程序

时间:2012-12-31 04:41:57

标签: iphone objective-c ios ipad

我遇到了最奇怪的错误,我在iPhone上运行应用程序,我有以下代码:

self.callCenter = [[CTCallCenter alloc] init];
    [self.callCenter setCallEventHandler: ^(CTCall* call) {
        if ([call.callState isEqualToString: CTCallStateDisconnected]) {
            NSLog(@"call ended");
            dispatch_sync(dispatch_get_main_queue(), ^(void) {
                NSLog(@"on main thread!");
                NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
                [userInfo setValue:weakSelf.recordRef forKey:kContactKey];
                [[NSNotificationCenter defaultCenter] postNotificationName:kCallEndedNotification object:nil userInfo:userInfo];
            });
        }
    }];

由于某种原因,不会调用此代码块。但是如果我在if语句上放置一个断点,那么它就会被调用。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我认为,这是一个iOS SKD 6错误。因为当前应该调用事件“CTCallStateDisconnected”,当您的应用程序处于后台时,所以根本不会调用它。我认为,当你把断点放在那里时为什么没关系的原因是因为事件被调用的时间。如果它在断点处停止,则呼叫仍在进行,并且当您的应用处于前台时调用事件。

看看这里,在iOS5中这是有效的: setCallEventHandler test