如何在obj-C的C函数中发送消息给自己?

我有一个C函数(在audio队列服务中的callback函数),我想发送消息给自己。 怎么做? 如果我input[self message],则出现错误:

Use of undeclared identifier 'self' 

您不会在实时callback中执行objc消息,如audio。 原因是objc消息不是固定的时间,并且可能locking,导致错过最后期限,导致audio丢失。 静态或dynamic( virtual )C ++调用和C函数调用当然是恒定时间,并且适合于实时上下文。

如果它不是实时/audiocallback ,那么一个选项就是将self作为用户信息或上下文parameter passing:

 void SomeCallback(t_stuff* const stuff, void* userInfo) { MONClass * Self = (MONClass*)userInfo; [Self doSomething]; } 

self只在类定义的上下文中有意义 – 它是指向该类的实例的指针。 函数不是任何类的一部分,所以没有self指针。 如果你想让你的callback能够发送一个消息给一个给定的对象,你需要存储一个指向你的callback可以find它的对象的指针。 这可能是一个全局variables(ick),一个userInfo参数只是为了这样的事情(更好),或其他地方。