You don't need to hold a reference to each cell. The data source should be a mirror of what is showing on the screen. You can know what should be removed added by using:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath


or when you deselect it:

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath


With NSIndexPath you can then know what has been selected/deselected:

How do you give cells in a TableView a unique reference
In my experience, cloister tiles in Carcassonne are often "too lucky". If you draw a cloister tile in the beginning of the game, it will typically still require an investment of quite a bit of "meeple" time to obtain the full 9 points, which makes it a fair trade-off. However, after about half of the game, it's relatively likely that you can "parachute" a cloister tile in some spot and get 8 or 9 points immediately. This adds a lot of randomness to the game.

What house rules work well to diminish this effect?
