Если ваш метод tableView:cellForRowAtIndexPath:
написан правильно с использованием dequeueReusableCellWithIdentifier:
(и вы не используете tableView:heightForRowAtIndexPath:
, или он очень быстрый), UITableView сможет обрабатывать тысячи строк, не перегружая устройство. Вам просто нужно заботиться о хранении ваших необработанных данных.
Что касается вашей проблемы незнания количества строк до тех пор, пока запрос не будет завершен, это достаточно легко обойти. Когда вы получите больше строк из запроса, просто используйте UITableView insertRowsAtIndexPaths:withRowAnimation:
, чтобы сообщить табличному представлению о наличии большего количества строк (и убедитесь, что ваши tableView:numberOfRowsInSection:
и tableView:cellForRowAtIndexPath:
будут отражать эти новые строки).
Если вы также хотите дождаться прокрутки пользователем до конца текущего списка, прежде чем продолжить запрос, обратите внимание, что UITableView является подклассом UIScrollView, а UITableViewDelegate реализует UIScrollViewDelegate. Так что просто используйте scrollViewDidScroll:
на вашем UITableViewDelegate, чтобы узнать, когда пользователь прокручивает, а затем проверьте contentOffset
табличного представления, чтобы определить, прокрутили ли они достаточно далеко, чтобы вы хотели загрузить больше данных.