The isEmptyDataSetVisible property was not being tracked correctly by API users because it was being set AFTER the UITableView's reloadData method was being executed, therefore the isEmptyDataSetVisible was outdated. Moving changing the order in the swizzle calls did fix it.
Also, the isEmptyDataSetVisible getter was working incorrectly when the view == nil