Objective c NSURLConnection导致错误的\u访问
当试图在从视图控制器调用的类中实例化Objective c NSURLConnection导致错误的\u访问,objective-c,Objective C,当试图在从视图控制器调用的类中实例化NSURLConnection时,我获得了BAD\u访问权限 我在类中实现了委托方法,接口是NSObject的子类 我一辈子都搞不清楚问题出在哪里: NSURL *url = [NSURL URLWithString:@"http://valid-value-here"]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init ]; [request setURL:url]; [req
NSURLConnection
时,我获得了BAD\u访问权限
我在类中实现了委托方法,接口是NSObject
的子类
我一辈子都搞不清楚问题出在哪里:
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也比较陌生,所以非常感谢您的帮助
编辑
以下是已启用僵尸的输出:**-[AccountApi登录:密码:onSuccess:onFail::]:消息发送到解除分配的实例0x71427c0
这就是这个NSURLConnection
所在的方法。它被称为通过:
loginApi = [[AccountApi alloc] init];
[loginApi Login: @"" password:@"" onSuccess:^{} onFail:^{}];
loginApi
声明为AccountApi*loginApi视图控制器的@实现
上方的code>
编辑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
我已经确认,lApi
到达Login
呼叫时已经是僵尸了。它是如何从以下三行代码中解除分配的:lApi=[[AccountApi alloc]init]代码>呼叫
已解决
在AccountApi
中,我的init缺少了一些内容……呃:
是:
应该是:
- (id)init {
return self;
}
它应该是nsuiger-cCount=[myJSONData-length]代码>因为UTF-8字节数可能与字符串长度不同。“chartset=utf-8”中有一个输入错误。有时这表示对象被过度释放,但也可能是由各种错误引起的。是吗?你的错误不在你发布的代码中;这运行正常。看起来在调用成功/失败块时,loginApi
已解除分配。尝试在属性或实例变量中存储loginApi
。NSURLConnection将保留其委托,直到连接完成,因此我想知道如何释放该实例。
- (id)init {
return self;
}