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