NSURLConnection结果为BAD_ACCESS

时间:2013-08-23 03:41:57

标签: objective-c

我试图在从我的视图控制器调用的类中实例化BAD_ACCESS时得到NSURLConnection

我在类中实现了委托方法,接口是NSObject <NSURLConnectionDelegate>的子类。

我不能为我的生活找出问题所在:

NSURL *url = [NSURL URLWithString:@"http://valid-value-here"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init ];
[request setURL:url];
[request setHTTPMethod:@"POST"];

[request addValue:@"application/json;chartset=utf-8" forHTTPHeaderField:@"Content-Type"];
NSString *myJSONString = @"valid-json-string";
NSData *myJSONData = [myJSONString dataUsingEncoding:NSUTF8StringEncoding];
NSUInteger cCount = [myJSONString length];
[request addValue:[NSString stringWithFormat:@"%d", cCount] forHTTPHeaderField:@"Content-Length"];


[request setHTTPBody:myJSONData];

NSURLResponse *theResponse = [[NSURLResponse alloc]init];
NSError *theError = nil;

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

当代码点击上面的最后一行时,就会发生异常。

我大部分时间都是.Net开发人员,因此我对XCode的熟悉程度低于标准,而且我对Objective-C也相对较新,所以对任何帮助表示赞赏!

修改

以下是ZombieEnabled的输出: * - [AccountApi登录:密码:onSuccess:onFail:]:发送到解除分配的实例0x71427c0的消息

这就是NSURLConnection生活在其中的方法。它通过以下方式调用:

loginApi = [[AccountApi alloc] init];

[loginApi Login: @"" password:@"" onSuccess:^{} onFail:^{}];

loginApi声明为AccountApi *loginApi;,高于视图控制器的@implementation

编辑2 我通过以下方式将AccountApi的引用声明为实例变量:

@implementation LoginViewController {
AccountApi *lApi;
}

然后在函数中:

- (void)callApi
{

    lApi = [[AccountApi alloc] init];

    NSString *login = userLogin.text;

    NSString *pass = userPassword.text;

    [lApi Login: login password: pass onSuccess:^{
        [self successBlock];  // For example...
    } onFail:^{
        [self failBlock];  // For example...
    }];

}

这仍然会产生: * - [AccountApi登录:密码:onSuccess:onFail:]:发送到解除分配的实例的消息0x7154ba0

编辑3 我已确认lApiLogin来电时已经是僵尸了。如何从3行代码中解除分配:lApi = [[AccountApi alloc] init];到呼叫?

解决AccountApi我的初始化失踪了......呃: 是:

- (id)init {

}

应该是:

- (id)init {
return self;
}

0 个答案:

没有答案