В Принятие современного Objective-C руководства Apple рекомендует использовать макрос NS_ENUM вместо enum. Я также прочитал объяснение от NSHipster о NS_ENUM и NS_OPTIONS.
Возможно, я что-то пропустил, но я не совсем понимаю, в чем разница между следующими двумя фрагментами и если есть почему NS_ENUM
рекомендуемый способ (за исключением, возможно, для обратной совместимости со старыми компиляторами)
// typedef enum
typedef enum {
SizeWidth,
SizeHeight
}Size;
// typedef NS_ENUM
typedef NS_ENUM(NSInteger, Size) {
SizeWidth,
SizeHeight
};