0
我现在正在测试HTTPFileUploadSample。因为我想用它来创建一种类型的命令工具行程序的,所以我调用该方法在main()函数,如下所示:在main()中使用NSURLConnection时,为什么连接无法完成?
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;
}
我发现它可以正常创建连接和发布请求,但它不能完成的连接,因为它不叫那些委托方法(连接:didReceiveResponse:或连接:didReceiveData:或connectionDidFinishLoading)在所有。 所以我打电话方法[[NSRunLoop currentRunLoop]运行]运行循环(作为代码注释),然后一切都很好。我不知道为什么。有人可以给我一些解释吗?谢谢!
谢谢!我想知道是否有其他方法可以替代使用runloop? – 2012-02-28 00:22:07
对于命令行应用程序,可以使用'+ sendSynchronousRequest:returningResponse:error:',它是同步的(阻塞直到完成),因此不需要runloop。 – 2012-02-28 02:23:55
谢谢你的帮助,鲍勃。 – 2012-02-28 07:02:06