Can an objective C method signature specify an enum type?

3 Solutions Collect From Internet About “Can an objective C method signature specify an enum type?”

You can’t use it “bare” like that without also specifying that it’s an enum:

-(void)pulseFiredWithSamplePosition:(float)position from: (enum VoiceName) voiceName;

should work. If you want to avoid specifying it like that, you can typedef it:

typedef enum _VoiceName {
    PAD_RHYTHM,
    ....
} VoiceName;

then you’ll be able to use just VoiceName as the argument type.

Obj-C is based on C, not C++. C requires the enum keyword, as quixoto showed. C++ lets you omit it.

As of iOS6 and Mac OSX 10.8 you can use the NS_ENUM macro

typedef NS_ENUM(NSUInteger, VoiceName)
{
 PAD_RHYTHM,
 PAD_RHYTHM2,
 PAD_RHYTHM3,
 PEEPERS,
 ATMOSPHERE,
 IMPULSE,
 FAST_PULSE,
 HAIRYBALLS_PADS,
 KICK
};

NSUInteger can be replaced with whatever type your defining, then you could use your method as specified.