我有三个对象,外星人,气球和操纵杆,它们都具有位置属性,我希望从一个控制器观察。KVO多个对象
当控制器观察到的任何物体的位置变量的变化,会立即更新相应的意见中心性能模型的位置..
我的问题是,当我使用下面的函数:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
参数Object类型为id,用于在对象模型的MutableArray中搜索正确的索引,然后在视图的MutableArray中使用相应的索引来更改视图的中心。 。
但是..因为参数是id类型的,而不是(气球*),(Joystick *)或(Alien *),xcode抱怨Location不是以下代码中的对象的成员:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
int index;
if ([keyPath isEqualToString:@"Location"])
{
index = [balloons indexOfObjectIdenticalTo:object];
[[balloonVs objectAtIndex:index] setCenter:CGPointMake(object.Location.x, object.Location.y)];
}
}
我明白为什么它不能正常工作..但不知道如何修复它。
另一种方法是只使用消息语法,即'[对象位置]',这将很好地工作,而不是需要强制。我想这只是一种风格偏好。 :) –