我正在使用KVO跟踪正在接收的文件的进度:
-(void)session:(MCSession *)session didStartReceivingResourceWithName:(NSString *)resourceName fromPeer:(MCPeerID *)peerID withProgress:(NSProgress *)progress
{
NSLog(@"RECEIVING... %@ from peer: %@", progress, peerID);
dispatch_sync(dispatch_get_main_queue(), ^{
[progress addObserver:self
forKeyPath:@"fractionCompleted"
options:NSKeyValueObservingOptionNew
context:NULL];
});}和
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if (object == progress) {
// Handle new fractionCompleted value
[progressBar setProgress:progress.fractionCompleted animated:YES];
NSLog(@"Fraction Complete: %@", [NSNumber numberWithDouble:progress.fractionCompleted]);
return;
}
[super observeValueForKeyPath:keyPath
ofObject:object
change:change
context:context];
}我想用这个来更新一个UIprogressView.但是代码在这一行上崩溃了,我不明白为什么:
[super observeValueForKeyPath:keyPath
ofObject:object
change:change
context:context];编辑:
这是错误
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<ViewController1: 0x15b57000>: An -observeValueForKeyPath:ofObject:change:context: message was received but not handled.编辑:
如果删除超级观察者observeValueForKeyPath:keyPath.,应用程序不会崩溃,但是NSLog(@“分数完成:%@总是报告值"0”)。
发布于 2013-10-27 23:23:56
您的超类有observeValueForKeyPath:ofObject:change:context:实现吗?您可以对此进行一次if检查:
if ([super respondsToSelector:@selector(observeValueForKeyPath:ofObject:change:context:){
NSLog(@"Yeah, I'm here matey!");
} else {
NSLog(@"Uh oh said the selector ghost");
}https://stackoverflow.com/questions/19623509
复制相似问题