我知道这些问题已经发布了很多,但它们都非常具体,不适用于我的问题。
[MirrorStarAV startRecording:]:无法识别的选择器发送到实例0x15561d60
调用以下方法时出现此错误:
- (bool) startRecording {
bool result = NO;
@synchronized(self) {
if (!_recording) { //Exception is raised on this line
result = [self setUpWriter];
startedAt = [[NSDate date] retain];
_recording = YES;
}
}
return result;
}
我将该方法称为:
bool _startRecording(){
return [delegateMSA startRecording];
}
答案 0 :(得分:0)
验证delegateMSA是否是具有startRecording方法的类的实例。
或做类似
的事情bool _startRecording(){
if([delegateMSA respondsToSelector:@selector(startRecording)]) {
return [delegateMSA startRecording];
}
}
答案 1 :(得分:0)
检查之前,委托是否响应此方法,这样您就可以确保该对象也能够响应此选择器:
bool _startRecording(){
if ([delegateMSA respondsToSelector:@selector(startRecording)])
{
return [delegateMSA startRecording];
}
return false;
}
无论哪种方式,我建议使用@required:
将此选择器添加到委托方法中@protocol MyRecorderDelegate <NSObject>
@required
- (BOOL)startRecording;
@end
因此,如果您的委托没有实现此方法,您将收到编译器警告。
答案 2 :(得分:0)
[MirrorStarAV startRecording:]: unrecognized selector sent to instance 0x15561d60
上述错误消息基本上是说MirrorStarAV
没有回复startRecording:
,因此当您致电[delegateMSA startRecording];
时,它会崩溃。 delegateMSA
设置了MirrorStarAV
个实例,但MirrorStarAV
的实例不响应`startRecording:
虽然是,但最好将方法更改为
bool _startRecording(){
if ([delegateMSA respondsToSelector:@selector(startRecording)])
{
return [delegateMSA startRecording];
}
return false;
}
但这不是你的问题。请注意,[MirrorStarAV startRecording:]
末尾有一个冒号:
。您在startRecording:
startRecording