iOS RestKit Framework: falla después de enviar la solicitud

mi código:

RKRequest.m:

#import "RKRequestDelegate.h"
#import "Constants.h"


@implementation RKRequestDelegate {

}

- (void)sendRequest:(UIImageView *)imageView {

    NSDictionary *queryParams = [NSDictionary dictionaryWithObjectsAndKeys:@"0", @"w", @"4", @"section", @"0",
                                                                           @"latitude", @"0", @"longitude", @"0", @"dt", @"0", @"di", nil];
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:[Constants getSettingsName]
            ofType:[Constants getSettingsFormat]];
    NSDictionary *contentDictionary = [NSDictionary dictionaryWithContentsOfFile:plistPath];
    NSString *addedUrl = [contentDictionary valueForKey:[Constants getBannerTag]];
    //

    RKRequest *request = [[RKClient sharedClient] get:addedUrl queryParameters:queryParams delegate:self];
}

- (void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response {
    NSLog(@"Response!!!");
}


@end

RKRequestDelegate.h:

@interface RKRequestDelegate : NSObject <RKRequestDelegate>

- (void)sendRequest:(UIImageView *)UIImageView;
- (void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response;

@end

AppDelegate.m:

    RKClient *client = [RKClient clientWithBaseURL:[HttpUtil getHost]];

Después de iniciar la aplicación, se bloquea después de 5 segundos. si cambio delegate:self delegar:[RKRequestDelegate class] no falla y da la respuesta 200 (OK), pero no devolvió la llamada didLoadResponse!

Por favor ayuda, y gracias.

ACTUALIZACIÓN:

Si uso [request sendSynchronously]; en RKRequestDelegate.m, se llama a la respuesta.

preguntado el 04 de julio de 12 a las 06:07

Su accidente se debe casi definitivamente a que su delegado está siendo liberado demasiado pronto. -

2 Respuestas

Marca request una variable de clase.

EDITAR: aquí hay un código, no lo verifiqué en la vida real, pero de esta manera debería funcionar

   @interface MYRequests : NSObject<RKRequestDelegate>
   {
       RKRequest *request;
   }

   @implementation MYRequests
   - (void)loginRequest
   {
       request = [RKRequest ...];
       request.method = RKRequestMethodGET;
       request.delegate = self;
       [request send];
   }
   @end

Respondido 04 Jul 12, 08:07

Agrego solicitud en @implementation BannerRKRequestDelegate {...} pero no funciona - AIRE

Debería estar en la sección @interface, ¿quieres decir eso? - anticiclope

No, el mismo problema, solo [request sendSynchronously] puede arreglar esto. Comienzo esta solicitud en la aplicación de inicio (pantalla principal), método viewDidLoad, ¿es correcto? - AIRE

Su bloqueo se debe casi definitivamente a que su delegado está siendo liberado demasiado pronto. Si no tiene ganas de aprender a administrar la memoria correctamente, intente pasar al equivalente de bloques: [RKClient get:usingBlock:] y es posible que tenga suerte.

Respondido 04 Jul 12, 07:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.