超能力回调识别
Callback identification in superpowered
我正在尝试扩展一段在 iOS 应用程序中使用 SuperPowered
音频库的代码。特别是,我对 void playerEventCallback(void *clientData, SuperpoweredAdvancedAudioPlayerEvent event, void *value)
回调很感兴趣,它会在创建音频播放器时传递一个指向管理 SuperPowered 对象的指针:
SuperpoweredAdvancedAudioPlayer(void *clientData, SuperpoweredAdvancedAudioPlayerCallback callback, unsigned int sampleRate, unsigned char cachedPointCount, unsigned int internalBufferSizeSeconds = 2, unsigned int negativeSeconds = 0);
如果我对代码的理解正确,没有什么能阻止我为了自己的目的修改这种情况,例如,传递一个指向数组中对象的指针,该对象将标识 is/was 运行,而不是管理 SuperPowered 对象。
我可以这样做吗,或者我应该知道有什么后果吗?
我最终就是这样做的,传递了一个定义如下的结构实例:
struct AudioPlayerWithIndex {
int index;
SuperpoweredAdvancedAudioPlayer* player;
Superpowered* superpoweredInstance;
AudioPlayerWithIndex(int index, SuperpoweredAdvancedAudioPlayer* player, Superpowered* superpoweredInstance) : index(index), player(player), superpoweredInstance(superpoweredInstance) {}
};
我正在尝试扩展一段在 iOS 应用程序中使用 SuperPowered
音频库的代码。特别是,我对 void playerEventCallback(void *clientData, SuperpoweredAdvancedAudioPlayerEvent event, void *value)
回调很感兴趣,它会在创建音频播放器时传递一个指向管理 SuperPowered 对象的指针:
SuperpoweredAdvancedAudioPlayer(void *clientData, SuperpoweredAdvancedAudioPlayerCallback callback, unsigned int sampleRate, unsigned char cachedPointCount, unsigned int internalBufferSizeSeconds = 2, unsigned int negativeSeconds = 0);
如果我对代码的理解正确,没有什么能阻止我为了自己的目的修改这种情况,例如,传递一个指向数组中对象的指针,该对象将标识 is/was 运行,而不是管理 SuperPowered 对象。
我可以这样做吗,或者我应该知道有什么后果吗?
我最终就是这样做的,传递了一个定义如下的结构实例:
struct AudioPlayerWithIndex {
int index;
SuperpoweredAdvancedAudioPlayer* player;
Superpowered* superpoweredInstance;
AudioPlayerWithIndex(int index, SuperpoweredAdvancedAudioPlayer* player, Superpowered* superpoweredInstance) : index(index), player(player), superpoweredInstance(superpoweredInstance) {}
};