RestKit iOS:简单的请求错误

ale*_*ngn 2 objective-c ios restkit

我是iOS开发的新手,我正在使用ARC测试用于iOS的RestKit 0.9.3和xCode 4.2,我遇到了一个简单的get请求的问题.

我遵循这个教程:https://github.com/RestKit/RestKit/wiki/Tutorial-%3A-Introduction-to-RestKit

我试图发送一个简单的GET请求,我的web服务TouchUpInside一个UIButton.

但我收到一个"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];
}
Run Code Online (Sandbox Code Playgroud)

我的代码:

MyViewController.m:

- (IBAction)myAction:(id)sender {
    DataAccess *data = [DataAccess alloc];
    [data sendRequests];
}
Run Code Online (Sandbox Code Playgroud)

DataAccess.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
Run Code Online (Sandbox Code Playgroud)

我在互联网上搜索,但我没有找到解决方案

有人可以帮帮我吗?

谢谢,

Beb*_*ber 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
Run Code Online (Sandbox Code Playgroud)

MyViewController.m:

- (IBAction)myAction:(id)sender {
    DataAccess *data = [DataAccess getInstance];
    [data sendRequests];
}
Run Code Online (Sandbox Code Playgroud)