gpt4 book ai didi

objective-c - 在main()中使用NSURLConnection时,为什么连接无法完成?

转载 作者:行者123 更新时间:2023-12-03 17:58:57 24 4
gpt4 key购买 nike

我正在测试 HTTPFileUploadSample现在。因为我想用它来创建一种命令行工具行程序,所以我在main()函数中调用该方法,如下所示:

int main (int argc, const char * argv[])
{
@autoreleasepool {
Uploader *upl = [Uploader alloc];
[upl initWithURL:[NSURL URLWithString:@"http://localhost/uploader.php"]
filePath:@"/test.txt"
delegate:upl
doneSelector:@selector(onUploadDone)
errorSelector:@selector(onUploadError)];
//[[NSRunLoop currentRunLoop] run];
}
return 0;
}

我发现它可以正常创建连接并发布请求,但无法完成连接,因为它没有调用那些委托(delegate)方法(connection:didReceiveResponse:connection:didReceiveData :connectionDidFinishLoading:)。所以我调用方法[[NSRunLoop currentRunLoop] run]来运行循环(如代码中的注释),然后一切正常。我不知道为什么。有人能给我一些解释吗?谢谢!

最佳答案

运行循环是一个大事件处理程序无限循环(好吧,无限循环直到停止)。它监视各种源,当它们生成事件时,它会将这些事件分派(dispatch)给监听器。这是管理单线程异步操作的非常有效的方法。

NSURLConnection (以及 Cocoa 中的许多其他东西)依赖于 runloop 进行处理。如果没有任何内容运行运行循环,则不会处理事件。

关于objective-c - 在main()中使用NSURLConnection时,为什么连接无法完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9466522/

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