我有三個對象,外星人,氣球和操縱桿,它們都具有位置屬性,我希望從一個控制器觀察。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)];
}
}
我明白爲什麼它不能正常工作..但不知道如何修復它。
另一種方法是隻使用消息語法,即'[對象位置]',這將很好地工作,而不是需要強制。我想這只是一種風格偏好。 :) –