Calling -removeAllSections doesn't seem to actually remove the sections from the tableview itself, and so adding sections or touching the tableview causes the app to crash from a really nasty exception.
My current work around is to call [self.tableview reloadData] immediately after removing all sections. I'm not sure if this is the best possible solution but it seems to work for me.