Код Mac OS X с использованием IBOutlet
, который не обновляется непрерывно во время функции, но обновляется в конце функции.
Я использую Xcode 10.2.1. Я пробовал показ, обновление, displayIfNeeded
и принудительное выполнение основного потока, используя performSelectorOnMainThread
.
- (IBAction) Test:(id)sender
{
int k;
int j = [obsInput intValue];
kvoObjONE *one = [[kvoObjONE alloc] init];
kvoObjTWO *two = [[kvoObjTWO alloc] init];
one.x = j;
[one addObserver:two forKeyPath:@"x" options:NSKeyValueObservingOptionNew context:NULL];
for (k=0; k<10; k++)
{
one.x = one.x + 10;
usleep(100000);
[echInput setIntValue: one.x];
// [echInput setIntValue: 34+k];
[outFromIn setIntValue: two.y];
NSLog(@"x %d y %d ", one.x, two.y);
NSLog(@" echInput %d", [echInput intValue]);
[self performSelectorOnMainThread:@selector(WSdisplay) withObject:@"nil" waitUntilDone:YES];
}
[one removeObserver:two forKeyPath:@"x"];
};
- (void)WSdisplay
{
// [[self.window contentView] setNeedsDisplay:YES];
// [self.window displayIfNeeded];
[self.window update];
[self.window display];
NSLog(@"display message 2\n");
}
Я ожидаю, что мои IBOutlets
(echInput и outFromIn) будут меняться в моем NSWindow
каждый раз через цикл for. Это не происходит каждый раз в цикле, но происходит после оператора removeObserver.
Я ожидаю, что консоль будет показывать значения one.x, two.y, echInput и отображать сообщение для каждого цикла, и это происходит.