У меня есть следующее дерево наследования:
NSObject <- GameObject <- RenderableObject <- SimpleBullet
GameObject
имеет метод с именем bounds
, который возвращает границы объекта. В моем коде у меня есть SimpleBullet
, который вызывает bounds
, чтобы получить свои границы, и я получаю предупреждение о том, что bounds
определено в нескольких местах; странный. Если я приведу SimpleBullet
к GameObject
и вызову метод bounds
, все будет работать как положено. Что происходит? Я не могу понять это поведение. Пример:
SimpleBullet* bullet = bulletInstance;
[bullet bounds]; // we get the warning.
[(GameObject*)bullet bounds]; // works as expected.
Как я уже сказал, метод bounds
определен в GameObject
, но почему Obj-C не знает, что SimpleBullet
является GameObject
, и не позволяет мне вызывать его метод без предупреждения?