UITableView indexPathsForVisibleRows get incorrect

I have a UITableView with 1 section and 3 rows, and each row is 1000 height, the UITableView height is 832, such as below:

but when I click the right button, the visibleCells has 2 items(row-0 and row-1), but the indexPathsForVisibleRows only has 1 item(row-0).

In my expectation, I set UITableView contentOffset with 168.8, the row-1 cell is visible. but indexPathsForVisibleRows does not correct.

Well then, I try to read the assembly of indexPathsForVisibleRows, I found that the UITableView use _visibleBounds to compute indexPathsForVisibleRows, but the _visibleBounds.height is reduced by one when compute, why?

the assembly code looks like below:

UITableView indexPathsForVisibleRows get incorrect
 
 
Q