0

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 Login:password:onSuccess:onFail:]: message sent to deallocated instance 0x71427c0

这就是 thisNSURLConnection生活在里面的方法。它通过以下方式调用:

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 Login:password:onSuccess:onFail:]: message sent to deallocated instance 0x7154ba0

编辑 3 我已经确认lApi它在接到电话时已经是一个僵尸了Login。它是如何在 3 行代码中从:lApi = [[AccountApi alloc] init];到调用解除分配的?

解决了 在AccountApi我的初始化中丢失了一些东西......呃:是:

- (id)init {

}

应该:

- (id)init {
return self;
}
4

0 回答 0