微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用未声明的标识符\'completionCallback\'

如何解决使用未声明的标识符\'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 举报,一经查实,本站将立刻删除。