Я бы хотел, чтобы мой контроллер подписывался на уведомления от просмотра. Однако, прежде чем сделать это, я хотел бы подтвердить, если нормально для представления знать экземпляр своего контроллера?
Позвольте мне предложить вам более конкретный пример того, что я имею в виду.
Мой контроллер создает представление и сообщает ему, что это его контроллер
self.gameView = [[GameView alloc] initWithController:self];
После этого он подписывается на уведомления из этого представления
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(saySomething:)
name:@"SaySomethingClever" object:nil];
Между тем, представление делает свое дело, но когда наступает подходящее время, оно отправляет уведомление
[[NSNotificationCenter defaultCenter] postNotificationName:
@"SaySomethingClever" object:gvc];
Чтобы сделать это, представлению необходимо знать получателя уведомления (gvc).
Я хотел бы использовать эту возможность, и как вы, все ли в порядке:
Когда вызывается initWithController
, представление
-(id) initWithController: (GameViewController* )g {
gvc = g;
return [self initWithFrame:CGRectMake(0, 0, 480, 300)];
}
где initWithFrame:CGRectMake
- это закрытый метод, который обрабатывает определенные элементы представления.
Все отлично работает, однако мне интересно, является ли этот подход морально приемлемым