首先,在请求进入ViewController之前,应用程序运行正常。我现在已将它移动到它自己的类文件以符合MVC模型,但在我发起请求时崩溃。我已经调试并将其缩小到我将委托设置为self的行。我编辑了类.h文件以符合'ASIHTTPRequestDelegate',但仍然没有运气。运行暂停时,我没有收到编译器错误,但是当调用该方法时,它确实指向了我的代码行:
if (delegate && [delegate respondsToSelector:didStartSelector]) {
以下代码是我用来发起请求的代码,这是从ViewController调用的。有什么想法吗?
-(void) authenticateLoginWithURLString:(NSString *)address Username:(NSString*)username Password:(NSString*)password{
//LoginViewController *loginVC = [LoginViewController new];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:address]];
[request setPostValue:username forKey:@"u"];
[request setPostValue:password forKey:@"pw"];
[request setDelegate:self];
[request startAsynchronous];
}
答案 0 :(得分:3)
这就是我的想法。你看到绿色水平条的右边是EXC_BAD_ACCESS。基本上你将self作为委托传递,并且该对象(self)在被验证为具有选择器之前被取消分配。换句话说,无论您在何处创建该类的实例,都需要对其进行强引用,以免被解除分配。
如果不够明确,请告诉我。