上下文我们正在开发一个可以使用 opencv 的 ios 应用程序,并且必须将我们更改viewcontrollers为 .mm
.mm 中的 opencv 相关函数不会执行涉及 ui 更改的代码。
GazeTracker是一个NSObject告诉用户凝视状态的,它工作正常
我们考虑过使用观察者,以便在viewController调用的 stateChanged 中使用选择器,该选择器将在状态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");
}