Cocoa touch 使用未声明的标识符';完成回调';
我试图通过使用Cocoa touch 使用未声明的标识符';完成回调';,cocoa-touch,Cocoa Touch,我试图通过使用AudioServicesAndSystemSoundCompletion方法识别声音何时播放完毕。第四个参数需要一个C函数,我在下面实现了这个函数。我收到了错误信息 引用未声明的标识符“completionCallback”(此函数中的第一次使用)。我所看到的在线示例中没有一个使用过[self completionCallback],它们也没有问题 我哪里做错了 -(void)playAndRelease{ AudioServicesAddSystemSoundCompl
AudioServicesAndSystemSoundCompletion
方法识别声音何时播放完毕。第四个参数需要一个C函数,我在下面实现了这个函数。我收到了错误信息
引用未声明的标识符“completionCallback”(此函数中的第一次使用)
。我所看到的在线示例中没有一个使用过[self completionCallback]
,它们也没有问题
我哪里做错了
-(void)playAndRelease{
AudioServicesAddSystemSoundCompletion (_soundID,NULL,NULL,completionCallback,(void*) self);
AudioServicesPlaySystemSound(_soundID);
}
void completionCallback (SystemSoundID mySSID, void* myself) {
//NSLog(@"completion Callback");
AudioServicesRemoveSystemSoundCompletion (mySSID);
[(SoundEffect*)myself release];
}
嗯,是的。有时,错误消息的意思与它所说的完全一致<代码>完成回调需要在上面定义
播放和释放
第一个选项:声明但不实现,completionCallback
void completionCallback (SystemSoundID mySSID, void* myself);
-(void)playAndRelease{
AudioServicesAddSystemSoundCompletion (_soundID,NULL,NULL,completionCallback,(void*) self);
AudioServicesPlaySystemSound(_soundID);
}
void completionCallback (SystemSoundID mySSID, void* myself) {
//NSLog(@"completion Callback");
AudioServicesRemoveSystemSoundCompletion (mySSID);
[(SoundEffect*)myself release];
}
或者提前对其进行全面定义:
static void completionCallback (SystemSoundID mySSID, void* myself) {
//NSLog(@"completion Callback");
AudioServicesRemoveSystemSoundCompletion (mySSID);
[(SoundEffect*)myself release];
}
-(void)playAndRelease{
AudioServicesAddSystemSoundCompletion (_soundID,NULL,NULL,completionCallback,(void*) self);
AudioServicesPlaySystemSound(_soundID);
}
另见:
嗯,是的。有时,错误消息的意思与它所说的完全一致<代码>完成回调需要在上面定义
播放和释放
第一个选项:声明但不实现,completionCallback
void completionCallback (SystemSoundID mySSID, void* myself);
-(void)playAndRelease{
AudioServicesAddSystemSoundCompletion (_soundID,NULL,NULL,completionCallback,(void*) self);
AudioServicesPlaySystemSound(_soundID);
}
void completionCallback (SystemSoundID mySSID, void* myself) {
//NSLog(@"completion Callback");
AudioServicesRemoveSystemSoundCompletion (mySSID);
[(SoundEffect*)myself release];
}
或者提前对其进行全面定义:
static void completionCallback (SystemSoundID mySSID, void* myself) {
//NSLog(@"completion Callback");
AudioServicesRemoveSystemSoundCompletion (mySSID);
[(SoundEffect*)myself release];
}
-(void)playAndRelease{
AudioServicesAddSystemSoundCompletion (_soundID,NULL,NULL,completionCallback,(void*) self);
AudioServicesPlaySystemSound(_soundID);
}
另见: