По вашему коду я могу только догадываться, что downloadSave вызывается в отдельном потоке, поскольку у вас есть NSAutoReleasePool (не говоря о том, что вы делаете, но это вероятно).NSURLConnection может отвечать на методы делегата в основном потоке, только когда он инициализируется в основном потоке.
Поскольку NSURLConnection уже является многопоточным вызовом делегата, вам не нужно создавать его в потоке.Если вам по какой-то причине вам нужен поток, вы можете использовать
NSError *error;
NSURLResponse *response;
NSData *connectionData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error];
И это должно вернуть данные дочернему потоку.