上下文
我们正在开发一个可以使用opencv的ios应用程序,并且必须将我们的viewcontrollers
更改为.mm
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");
}