我有一个子类,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);
}
}
当一个节点被添加到场景中时,无论如何都会得到通知?或者也许 KVO 运作良好,但我在这里做错了什么?