我收到了这个错误,因为我只在我家编程xcode,所以我没有资源快速询问最简单的10秒问题。所以这是今天出现的,我正在使用AudioSessionAddPropertyListener函数,我收到此警告:
将'CFTypeRef'(又名'const void )传递给'void '类型的参数将丢弃限定符
来自这行代码。
// Registers the audio route change listener callback function
// An instance of the audio player/manager is passed to the listener
AudioSessionAddPropertyListener ( kAudioSessionProperty_AudioRouteChange,
audioRouteChangeListenerCallback, CFBridgingRetain(self) );
然后定义AudioSessionAddPropertyListener
AudioSessionAddPropertyListener( AudioSessionPropertyID inID,
AudioSessionPropertyListener inProc,
void *inClientData)
我看到* inClientData变量看起来是void(或者可能不是)
那么这里究竟出现了什么问题,大多数情况下我想知道在遇到问题时应该注意什么。我不知道我不知道的是什么。
感谢
史蒂夫我还没到50岁,所以我无法发表评论:
我查看了CFBridgingRetain的定义 它需要ID,并返回CFTypeRef
NS_INLINE CF_RETURNS_RETAINED CFTypeRef CFBridgingRetain(id X) {
return (__bridge_retained CFTypeRef)X;
}
现在CFTypeRef的定义是无效的 / *所有“CF对象”的基础“类型”,以及它们的多态函数* / typedef const void * CFTypeRef;
所以为了放弃警告我做了这个,把函数的输出转换为(void *)
AudioSessionAddPropertyListener ( kAudioSessionProperty_AudioRouteChange,
audioRouteChangeListenerCallback, (void *) CFBridgingRetain(self) );
有没有人看到这个问题?