Honestly, that’s quite a lot of work. I believe that the recommendation for the max number of rows is only a few hundred, but you are trying to insert 1000’s which is a slightly different issue.
Question: Do you need to use a tableView or could you render the rows yourself using your own display groups in a scrollView? I believe this would be quicker to render.
Advice: I think that you would be better off inserting only 100 and then using a timer to intermittently insert 10 or so at a time, maybe the timer interval would be 500 milliseconds.
More advice: If you are trying to show that many rows it probably shows a flaw in the app UI logic, tbh. If you look at apps like the iOS Twitter client, you’ll see that they load a given number of rows and then allow the user to “pull down/up” to load more results. I think this would be better in your situation… You’re not hiding information from the user, but you are giving them the option to control the performance, to a degree.
Addendum: If they scroll down too far you could start trimming rows off the top, if UI performance drops. Also, there is actually a missing feature in the scrolling widgets which stops you from extending the scrollable size of the view.