上下文我们正在开发一个可以使用 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");
}