不调用NSURLConnection委托方法

Man*_*uja 56 iphone nsurlconnection nsurlprotocol

我正在尝试创建一个简单的NSURLConnection,以使用GET请求与服务器通信.连接工作正常,但从不调用NSURLConnection的委托方法.

这是在做什么:

NSString *post = [NSString stringWithFormat:@"key1=%@&key2=%@&key3=%f&key4=%@", val1, val4, val3, val4];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease] ;

[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.domain.com/demo/name/file.php?%@", post]]];

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection start];
Run Code Online (Sandbox Code Playgroud)

已实现以下委托方法,但没有一个被调用..

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    NSLog(@"did fail");
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    NSLog(@"did receive data");
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    NSLog(@"did receive response ");
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
    NSLog(@"did finish loading");
    [connection release];
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

Art*_*Art 136

尝试在主线程上运行操作:

NSURLConnection * connection = [[NSURLConnection alloc] 
                                initWithRequest:request
                                       delegate:self startImmediately:NO];

[connection scheduleInRunLoop:[NSRunLoop mainRunLoop] 
                      forMode:NSDefaultRunLoopMode];
[connection start];
Run Code Online (Sandbox Code Playgroud)

  • 什么是愚蠢的API,即使在主线程上调用它,我仍然需要这样做. (5认同)
  • 解释为什么要在主线程中运行它:https://github.com/rs/SDWebImage/issues/213#issuecomment-10102989 (3认同)

vis*_*kh7 22

你是在后台线程上调用它吗?如果您在后台线程上执行此操作,则可以在调用委托之前退出该线程.

  • 我发现了问题是什么......我也得到了它.但是我仍然想对此进行一些澄清.实际上我在类的静态方法中创建了连接,并且从未调用委托函数.当我在实例方法中创建连接时,一切正常工作.. delgate函数现在被调用...所以,现在问题是当在静态方法中创建连接或者在实例方法中创建连接时有什么区别? (3认同)