NSURLDownload загружается в фоновом режиме, поэтому вызов initWithRequest:delegate:
немедленно возвращается.
Если ваша программа не передаст управление циклу выполнения (это обрабатывается автоматически для приложений, но должно выполняться вручную для инструментов), она просто выполнит оставшуюся функцию main () и завершится.
Кроме того, сообщения вашему делегату отправляются из цикла выполнения, поэтому, даже если main () не завершится немедленно, ваш делегат все равно не получит downloadDidBegin:
или downloadDidFinish:
, если ваш код не вызвал из NSRunLoop
методов запуска.
Добавьте следующую строку в ваш код непосредственно перед [pool drain];
:
[[NSRunLoop currentRunLoop] run];
Дополнительную информацию о циклах выполнения можно найти в Руководстве по программированию потоков .