Этот вопрос обсуждает то, что вы ищете
Edit:
Если вы хотите скачать файл, ТОГДА воспроизводите его, вам нужно сделать следующее:
используйте NSURLConnection для загрузки файла на диск - эта ссылка обсуждает сохранение больших файлов (я не буду хранить 2-5 МБ в памяти, когда они мне не нужны, даже подумав, что, вероятно, работа).
, чем AVAudioPlayer для его воспроизведения - отметьте это out.
Редактировать 2:
Для кнопки отмены она должна просто вызывать метод [NSURLConnection cancel] и делать все остальное, что может потребоваться для завершения вашего класса загрузки ...
Для индикатора выполнения в методе NSURLConnectionDelegate didReceiveResponse вы берете NSURLResponse, приводите его к NSHTTPURLResponse и извлекаете размер загружаемого файла, используя метод Ожидаемый размер объекта .
И затем при каждом вызове метода NSURLConnection: didRecieveData вы подсчитываете входящие байты, используя метод [data length], делите его на Ожидаемый размер объекта из предыдущего ответа URL, и это число с плавающей точкой представляет ваш прогресс что вы передаете в свойство хода выполнения свойство