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