UPDATE:
I would encourage you to make the view controller subscribe to the notification in the setter of the data model. It will conveniently keep subscriptions-unsubscriptions in one place:
- (void)setDataModel:(YourDataModelClass*)dataModel
{
[_dataModel removeObserver:self forKeyPath:@"myGame" context:nil];
_dataModel = dataModel; // I hope you use ARC, otherwise check if the pointers are different.
if (_dataModel != nil)
[_dataModel addObserver:self forKeyPath:@"myGame" options:0 context:nil];
}
- (void)dataModelDidUpdate
{
[self.tableView reloadData];
}
- (void)dealloc
{
self.dataModel = nil; //An easy way to unsubscribe
}
The owner of the view controller is responsible to set the proper data model on creation and when it changes.