Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios ASIHTTPREQUEST xCode-设置委托时崩溃_Ios_Xcode_Delegates_Asihttprequest - Fatal编程技术网

Ios ASIHTTPREQUEST xCode-设置委托时崩溃

Ios ASIHTTPREQUEST xCode-设置委托时崩溃,ios,xcode,delegates,asihttprequest,Ios,Xcode,Delegates,Asihttprequest,首先,当请求在ViewController中时,应用程序工作正常。我现在已经将它移动到它自己的类文件中,以符合MVC模型,但是当我启动请求时,它崩溃了。我已经调试并将其缩小到将委托设置为self的行。我已经编辑了类“.h”文件以符合“ASIHTTPRequestDelegate”,但仍然没有成功。当运行暂停时,我没有收到编译器错误,但是当调用该方法时,它确实会将我指向他的代码行: if (delegate && [delegate respondsToSelector:didSt

首先,当请求在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];
}

我就是这么想的。你看,在绿色水平条的右边,写着EXC_BAD_ACCESS。基本上,您将self作为委托传递,并且在验证该对象(self)是否具有选择器之前,该对象(self)将被解除分配。换句话说,无论在何处创建该类的实例,都需要对其进行强引用,这样它就不会被释放


如果这还不够清楚,请告诉我。

您遇到了什么异常?我根本看不到,它只是暂停。除非我在错误的位置(控制台)查找。我添加了一个屏幕截图,但很抱歉大小。您的类是否实现了
requestFinished:
方法,如
ASIHTTPRequestDelegate
中定义的那样?是的,它实现了。如下所示:
-(void)requestFinished:(ASIHTTPRequest*)请求以前一切都很好,就在我把它移到一个新类的时候。谢谢你的详细回答!我在这里叫它,我怎么能把它设为强者而不是弱者呢<代码>数据库连接*dbConnection=[databaseConnection new]您应该使用[databaseConnection alloc]init];此外,还应该使用大写字母命名类,如:DatabaseConnection。最后,您应该在该文件的.h文件中创建一个属性,如:@property(nonatomic,strong)DatabaseConnection*dbConnection;在你的.m文件中合成后分配给它。啊,谢谢。我知道命名约定,创建它时我只是半睡半醒。我会试着尽快把它换掉。我会试一试,让你知道。再次感谢!我是否删除了
databaseConnection*dbConnection=[[databaseConnection alloc]init]?正如Xcode所说,我将隐藏实例变量;