如何解决使用未声明的标识符\'completionCallback\'
| 我正在尝试使用AudioServicesAddSystemSoundCompletion
方法确定声音何时结束播放。第4个参数需要一个C函数,下面已实现。我收到错误消息,
引用时为Use of undeclared identifier \'completionCallback\' (first use in this function)
。我见过的在线示例都没有使用过[self completionCallback]
,也没有问题。
我要去哪里错了?
-(void)playAndRelease{
AudioServicesAddSystemSoundCompletion (_soundID,NULL,completionCallback,(void*) self);
AudioServicesPlaySystemSound(_soundID);
}
void completionCallback (SystemSoundID mySSID,void* myself) {
//NSLog(@\"completion Callback\");
AudioServicesRemoveSystemSoundCompletion (mySSID);
[(SoundEffect*)myself release];
}
解决方法
嗯,是。有时,错误消息的含义与所说明的完全相同。需要在“ 5”以上定义“ 4”。
第一种选择:声明但不执行
completionCallback
。
void completionCallback (SystemSoundID mySSID,void* myself);
-(void)playAndRelease{
AudioServicesAddSystemSoundCompletion (_soundID,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,(void*) self);
AudioServicesPlaySystemSound(_soundID);
}
也可以看看:
维基百科:函数原型版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。