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;
}