У меня есть подкласс SKNode
, которого я хочу получать уведомления, когда они добавляются в сцену. Зная, что у SKNode
есть свойство scene
, я попытался использовать KVO, но по какой-то причине это не работает.
- (id)init
{
self = [super init];
if (self)
{
[self addObserver:self forKeyPath:@"scene" options:NSKeyValueObservingOptionNew context:nil];
}
return self;
}
- (void)dealloc
{
[self removeObserver:self forKeyPath:@"scene"];
}
+ (instancetype)gameWorld
{
return [[self alloc] init];
}
#pragma mark - Observer methods
// never called
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (object == self && [keyPath isEqualToString:@"scene"])
{
KKScene *scene = change[NSKeyValueChangeNewKey];
NSLog(@"%@", scene);
}
}
Есть ли способ получить уведомление, когда узел был добавлен в сцену? А может, КВО работает хорошо, но я что-то не так сделал?
scene
устанавливается только в том случае, если сцена является прямым родителем узла. Я думал, что даже дети будут иметь сцену - person Yaman   schedule 14.03.2014