The logic for all these isEmpty properties is pretty convoluted and relies on functions getting called by someone else in a certain order.  Is there any reason something like this wouldn't work?

```objc
- (BOOL)isSectionEmpty:(NSInteger)section
{
    return [_tableData[section] count] == 0;
}
```