gpt4 book ai didi

iphone - NSURLConnection 委托(delegate)方法未被调用

转载 作者:行者123 更新时间:2023-11-28 17:55:19 25 4
gpt4 key购买 nike

我有一个服务器类,它有 NSURLConnection 的委托(delegate)方法。我有另一个名为 SendRequest 的类,它将 NSMutableURLRequest 发送到服务器类。在服务器类中,我有两种方法称为

- (void)executeAsync:(NSMutableURLRequest)urlRequest timeOutInterval:(int)timeOut
{
_urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:YES];];
}

- (void)executeSync:(NSMutableURLRequest)urlRequest
{
NSData* respData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];

}

到这里为止一切正常,我可以从调用委托(delegate)方法的 SendRequest 类调用上面的 executeAsync 方法。

现在我在 SendRequest 类中添加了一个新方法,它将调用 Server 类中的 executeRequest 方法。

- (void)executeRequest:(NSMutableURLRequest)urlRequest
{
_urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:YES];];
}

这一次,我被困住了。正在调用 executeRequest 方法,但它在处理 URL 请求时未调用其委托(delegate)方法。我在这里被打了好几个小时。

一切似乎都是正确的,我发送 urlRequest 的方式与之前发送的方式相同。但我不知道为什么它不起作用。随意发表评论,但请帮助我。我真的很担心

编辑:

我需要向服务器发送请求并获得响应。如果我尝试同步它工作正常,但它阻塞了主线程。这就是我选择异步的原因。通过委托(delegate)方法,我试图获取响应数据。

最佳答案

我认为您对系统的描述与发布的代码不符,它解释了您描述的问题。 SendRequest 类应该依赖于 Server 类来执行服务器请求。

看起来 SendRequest 类将连接委托(delegate)设置为 self。我猜所有这些委托(delegate)方法都是在 Server 类上实现的。

尝试按照您的描述建议进行....

// SendRequest.m

- (void)executeRequest:(NSMutableURLRequest)urlRequest
{
// however you get ahold of your server...
Server *myServer = [Server sharedInstance];

// let it do the work. it has the delegate methods
[myServer executeAsync:urlRequest];
}

或者,SendRequest 代码可以保持原样,但将委托(delegate)设置为 Server 类的一个实例(同样,假设这是实现委托(delegate)方法的地方)。我认为第二个想法更糟糕,因为服务器已经知道如何开始请求。

关于iphone - NSURLConnection 委托(delegate)方法未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10451131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com