来自addObserver的IOS选择器:selector:name:object不在视图控制器中执行

时间:2013-05-30 09:42:54

标签: ios nsnotifications addobserver

上下文 我们正在开发一个可以使用opencv的ios应用程序,并且必须将我们的viewcontrollers更改为.mm

.mm中的opencv相关函数不会执行涉及ui更改的代码。 GazeTracker是一个NSObject,告诉用户注视状态,并且工作正常

我们考虑使用观察者,以便我们在名为stateChanged的viewController中使用一个选择器,只要gazeTracker中的状态发生变化,它就会执行。

永远不会调用“stateChanged”。我们最初认为它只是gazeTracker所以我们将其替换为“self”(意为viewController),但它仍然不起作用。 我们对“observer”的理解是,当对象中的值发生更改时,会调用selector。但是,我们不知道“object”中“addObserver:selector:name:object”的目的。

the original code

- (void)viewDidLoad
{
[super viewDidLoad];

[[NSNotificationCenter defaultCenter] addObserver:gazeTracker.state
selector:@selector(stateChanged) 
name:@"stateChanged" 
object:nil];

}
-(void)stateChanged{
NSLog(@"some value in gaze tracker has changed");
}

with "self"

 - (void)viewDidLoad
{
[super viewDidLoad];

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(stateChanged) 
name:@"stateChanged" 
object:nil];

}
-(void)stateChanged{
NSLog(@"some value in gaze tracker has changed");
}

0 个答案:

没有答案