I try to extend the functionality of SimpleAudioEngine of cocos2d with the ability to play several sound effect one after another as some kind of chain. I tried to do this w
You are correct that you can't add instance variables (or synthesized @properties) to a category. You can workaround this limitation using the Objective-C runtime's support for Associative References
Something like this:
In your .h:
@interface SimpleAudioEngine (SoundChainHelper)
@property (nonatomic, retain) NSMutableArray *soundsInChain;
@end
In your .m:
#import
static char soundsInChainKey;
@implementation SimpleAudioEngine (SoundChainHelper)
- (NSMutableArray *)soundsInChain
{
return objc_getAssociatedObject(self, &soundsInChainKey);
}
- (void)setSoundsInChain:(NSMutableArray *)array
{
objc_setAssociatedObject(self, &soundsInChainKey, array, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end
(The standard disclaimer applies. I typed this in the browser, and didn't test it, but I have used this technique before.)
The documentation I linked to has a lot more information about how associative references work.