La mejor manera de usar RestKit en una aplicación para iPhone

Estoy escribiendo una aplicación para iPhone y finalmente tengodecidid para usar RestKit como marco para conectarse a los Servicios REST.

La forma en que pienso construir es hacer que los Controladores de mi aplicación sean completamente independientes de RestKit. Por ej. Si tuviera una pantalla de inicio de sesión, en el escenario habitual de RestKit (basado en programas de ejemplo, así como en algunas entradas de blog creadas por los desarrolladores de RestKit), el controlador implementará el protocolo RKRequestDelegate y usará el RKClient para llamar al servicio en el paso del controlador self (el controlador) como delegado. Me gustaría ocultar eso del Usuario que desarrolla los Controladores y las vistas.

Lo que estoy pensando es lo siguiente. Tendré un LoginService que iniciará sesión en el usuario. Habrá un protocolo LoginServiceDelegate que tiene dos métodos para el éxito y el fracaso. Y el Controlador puede implementar el LoginServiceDelegate y llamar al Método de inicio de sesión en LoginService y obtener una devolución de llamada correcta o incorrecta. Sin embargo, para hacer esto, necesitaré alguna forma para que mi LoginService delegue las llamadas al controlador. RestKit no me permite hacer esto y la única forma en que puedo hacerlo inicializando el LoginService con un LoginServiceDelegate, almacenando ese delegado como una propiedad y llamando al método apropiado en el delegado en un inicio de sesión exitoso o fallido.

Esto mantiene la base de código de mi Controlador al mínimo y oculta por completo cómo funciona LoginService y qué marco utiliza internamente. El uso de delegado también desacopla el controlador de los modelos y, por lo tanto, tenemos una buena opción de MVC. Sin embargo, estoy preocupado por las implicaciones de la clase Modelo que retiene el objeto Controlador ya que está reteniendo al delegado.

¿Cómo usarías RestKit? Si crees que mi enfoque es bueno, ¿qué cambiarías para mejorarlo? Si no le gusta mi enfoque, me gustaría recibir sus comentarios sobre por qué cree que no es una buena práctica.

Este fragmento de código a continuación debería darle una mejor idea

@protocol LoginServiceDelegate;

@interface LoginService : NSObject <RKRequestDelegate>{
    NSObject<LoginServiceDelegate> *_loginServiceDelegate;

}

@property (retain, nonatomic) NSObject <LoginServiceDelegate> *loginServiceDelegate;

- (id) initWithDelegate:(NSObject<LoginServiceDelegate>*) loginServiceDelegate;

- (void) login:(NSString *)username withPassword:(NSString *)password;

@end

@protocol LoginServiceDelegate
@optional

- (void) loginSuccess:(LoginInfo *) loginInfo;

- (void) loginFailure:(NSString *) message;

@end

Salud !!

Respuestas a la pregunta(1)

Su respuesta a la pregunta