¿Qué es una enumeración typedef en Objective-C?

No creo que entienda fundamentalmente lo que es unenum es y cuándo usarlo.

Por ejemplo

typedef enum {
    kCircle,
    kRectangle,
    kOblateSpheroid
} ShapeType;

¿Qué se declara realmente aquí?