2012-02-13 3 views
2

Я новичок в разработке iOS, и сейчас я тестирую RestKit 0.9.3 для iOS с xCode 4.2 с использованием ARC, и у меня возникает некоторая проблема для простого запроса на получение.RestKit iOS: простая ошибка запроса

Я следуя учебник: https://github.com/RestKit/RestKit/wiki/Tutorial-%3A-Introduction-to-RestKit

Я пытаюсь отправить простой запрос добраться до моего веб-сервисов на TouchUpInsideUIButton.

Но я получаю "EXC_BAD_ACCESS": [6373:fb03] *** -[DataAccess respondsToSelector:]: message sent to deallocated instance 0x8275160

приложение остановки на этой линии, на RKRequest.m файла:

if ([self.delegate respondsToSelector:@selector(requestDidStartLoad:)]) { 
    [self.delegate requestDidStartLoad:self]; 
} 

Мой код:

MyViewController.m:

- (IBAction)myAction:(id)sender { 
    DataAccess *data = [DataAccess alloc]; 
    [data sendRequests]; 
} 

ДанныеAccess.m:

@implementation DataAccess 

-(void)sendRequests { 

    [RKClient clientWithBaseURL:SERVER_URL username:SERVER_USERNAME password:SERVER_PASSWORD]; 
    [[RKClient sharedClient] get:@"/myDistantAction" delegate:self]; 
} 

#pragma mark - Delegate 

-(void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response { 

    if ([response isOK]) { 
     NSLog(@"Retrieved : %@", [response bodyAsString]); 
    } 
} 

@end 

Я искал в Интернете, но я не нашел решение

Кто-нибудь может мне помочь?

Thanks,

+0

Вы можете попытаться сделать синглтон для DataAccess? Я думаю, что это ваша проблема – Beber

ответ

5

Это может быть одно решение. Я изменил свой код, чтобы использовать синглтон. Я думаю, что проблема заключается в вызове функции обратного вызова, потому что он больше не может обращаться к экземпляру.

DataAccess.m:

@implementation DataAccess 

static singleton *DataAccess= nil; 

+ (DataAccess*)getInstance 
{ 
    if (singleton == nil) { 
     singleton = [[DataAccess alloc] init]; 
    } 
    return singleton; 
} 

-(void)sendRequests { 

    [RKClient clientWithBaseURL:SERVER_URL username:SERVER_USERNAME password:SERVER_PASSWORD]; 
    [[RKClient sharedClient] get:@"/myDistantAction" delegate:self]; 
} 

#pragma mark - Delegate 

-(void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response { 

    if ([response isOK]) { 
     NSLog(@"Retrieved : %@", [response bodyAsString]); 
    } 
} 

@end 

MyViewController.m:

- (IBAction)myAction:(id)sender { 
    DataAccess *data = [DataAccess getInstance]; 
    [data sendRequests]; 
} 
+0

Он работает отлично! Спасибо – alexmngn

+0

Когда я попробую это, я получил ошибку: «неизвестное имя типа singleton», любая идея? – Sebastien

+0

Какое имя объекта? – Beber

Смежные вопросы