【发布时间】:2012-02-27 04:33:34
【问题描述】:
我希望我的控制器订阅来自视图的通知。但是,在此之前,我想确认视图是否可以知道其控制器的实例?
让我举一个更具体的例子来说明我的想法。
我的控制器创建视图并通知它它是它的控制器
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 是处理特定视图内容的私有方法。
一切正常,但是,我想知道这种方法在道德上是否可以接受
【问题讨论】:
标签: objective-c model-view-controller nsnotificationcenter