How to declare an enum value as being deprecated in ObjectiveC (2.0) How to declare an enum value as being deprecated in ObjectiveC (2.0) objective-c objective-c

How to declare an enum value as being deprecated in ObjectiveC (2.0)


I think you're attaching the __attribute__ bit to the wrong side of the assignment operator. This seems to work fine:

typedef enum{   GeometricPoint,   GeometricLine,   GeometricRectangle,   GeometricSquare __attribute__((deprecated)) = GeometricRectangle,   GeometricCircle}GeometricFigures;

and now assigning GeometricSquare gives a compiler warning:

int fig = GeometricSquare;    //'GeometricSquare' is deprecated


At a later point a convenience macro was added:

typedef NS_ENUM(NSInteger, GeometricFigures){   GeometricPoint,   GeometricLine,   GeometricRectangle,   GeometricSquare __deprecated_enum_msg("Squares are for squares. Use GeometricRectangle.") = GeometricRectangle,   GeometricCircle,};