Я сейчас тестирую 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;
}
Я обнаружил, что он может создать соединение и отправить запрос в обычном режиме, но не может завершить соединение, потому что он не вызывает эти методы делегата ( connection: didReceiveResponse: или connection: didReceiveData: или connectionDidFinishLoading: ) вообще.
Поэтому я вызываю метод [[NSRunLoop currentRunLoop] run] для запуска цикла (как комментарий в кодах), тогда все в порядке. Я не знаю почему. Кто-нибудь может дать мне какое-нибудь объяснение? Thx!