I did that myself some time ago. If I remember right, then I just loaded additional data into the Array that I used as container for the data in the table. Once the data was loaded then I redraw the table. That's it.
I think you are getting lost just because you try to do it more complicated.
As for your comment:
[_tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.001];
or
[_tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
both should execute the reloadData in another thread and therefore should not cause a loop. However, even then you should add the new data just before the end of the table is reached.