If the row in tableView:objectValueForTableColumn:row: is your data source's last object, then you're at the end. It doesn't get requested until it's about to be made visible in the view.
Then you could load more data (in the background!) and reload the table when done.