0

Я работаю над менеджером загрузки, и я пытаюсь обновить ярлыки, указывающие скорость загрузки и процент слева.Отложенная метка Обновлено Изнутри соединения: didReceiveData: data

Он обновляется слишком быстро в пределах соединения: didReceiveData, хотя и с использованием функции performSelector и отсрочки от этого метода не работает (он просто задерживает его за это задолго до запуска).

Что мне делать, чтобы обновить что-то вроде скорости загрузки или процента влево?

ответ

1

Если вы не хотите, чтобы обновить дисплей, как быстро насколько это возможно, просто обратите внимание на время, когда вы его последний раз обновляли. Если текущее время не меньше, скажем, 0,5 секунды с момента последнего обновления, просто не обновляйте этот пропуск.

1

Было бы полезно, чтобы увидеть, как рассчитать скорость и процент, но один подход будет:

  1. Вычислить время, прошедшее (в секундах) между двумя вызовами connection:didReceiveData
  2. Возьмите размер текущий принятый данные (назовут его size)
  3. Sum размера общих данных, загруженный до сих пор (позволяет называть его downloadedSize)
  4. Speed = size/timeElapsed
  5. Percentage = downloadedSize/Total data size (Предполагая, что у вас есть)
  6. Преобразовать в требуемых единицах
  7. Обновление метки (я не вижу, почему вы должны задержать здесь)
+0

Я думаю, что он хочет отложить его, чтобы метка не обновляла каждый кадр или, по крайней мере, так быстро, что пользователь не мог его прочитать ... –

+0

Да, я просто хочу, чтобы этикетка не обновляла каждый кадр. – arooo

+0

Вы усекаете свои расчеты? (например, отображение только 1,3 для 1.333333 и т. д.) – giorashc