advertencia en typedef enum al convertir la aplicación a 64 bits

Estoy convirtiendo mi aplicación iOS en 64 bits. Tengo instalado el último Xcode 5.1 (beta 4).

Cuando compilé la aplicación, recibí más de 100 advertencias y la mayoría de ellas son bastante fáciles de solucionar. Sin embargo, tengo una advertencia en el siguiente código:

+ (CommentResponseStatus)commentReponseStatusCodeWithStatusString:(NSString *)_status { NSArray *commentStatusString = [NSArray arrayWithObjects:@"success", @"needConfirmation", @"stopped", nil]; return [commentStatusString indexOfObject:_status]; } 

Donde CommentResponseStatus se declara como:

 typedef enum { success, needConfirmation, stopped } CommentResponseStatus; 

Tengo una advertencia "Conversión implícita pierde precisión de número integer: ' NSUInteger ' (también conocido como ' unsigned long ') a ' CommentResponseStatus '"

La advertencia está en la línea de return [commentStatusString indexOfObject:_status];

En NSArray tenemos - (NSUInteger)indexOfObject:(id)anObject;

Estoy confundido acerca de esta advertencia y no sé por ahora cómo solucionarlo. Cualquier ayuda rápida sería apreciada.

De acuerdo con apple docs sobre los cambios de 64 bits.

Las enumeraciones también se tipean: en el comstackdor LLVM, los types enumerados pueden definir el tamaño de la enumeración. Esto significa que algunos types enumerados también pueden tener un tamaño mayor que el esperado. La solución, como en todos los demás casos, es no hacer suposiciones sobre el tamaño de un tipo de datos. En cambio, asigne cualquier valor enumerado a una variable con el tipo de datos adecuado

Para resolver esto, cree enumeración con el tipo como la syntax a continuación.

 typedef NS_ENUM(NSUInteger, CommentResponseStatus) { success, needConfirmation, stopped }; 

o

 typedef enum CommentResponseStatus : NSUInteger { success, needConfirmation, stopped } CommentResponseStatus;