Если вы уже выяснили пользовательский спрайт, вы, вероятно, столкнулись с addSublayer:, который вызывается на другом слое для добавления его в дерево слоев. По сути, чтобы добавить препятствия, вам нужно создать новый слой для одного с помощью - [CALayer layer], настроить его и [rootLayer addSublayer: препятствие];
Теперь к вашему вопросу об отдельных файлах: создание нового класса с собственным заголовком и реализацией - отличная идея. Но просто сделайте один класс (т. Е. Одну пару .h / .m) для определения того, как работает Препятствие, и создайте множество его экземпляров, выполнив вызов - [[Obstacle alloc] init] (не забудьте освободить их, когда они не больше видно!)
Как "Препятствие" становится импортированным и видимым? Скорее всего, вы поместите переменную в @interface {} объекта Obstacle, который является типом CALayer. GameBoard (или ViewController для очень простых прототипов / приложений) может иметь метод -addObstacle: он принимает препятствие, запрашивает его слой и добавляет его в rootLayer.
Пытаясь быть тщательным, я, возможно, пропустил суть вашего вопроса, который был более похож на: "Должен ли я вообще иметь класс препятствий или просто массив препятствий, заполненный CALayers?" Вы, конечно, могли бы сделать это таким образом, учитывая описание игры. Но как только вы захотите сохранить какую-либо информацию об отдельных экземплярах Препятствий, вам лучше самим объектам отвечать на вопросы об этой информации. Я сделал множество прототипов / тестовых приложений, которые просто имеют массив слоев, потому что, хотя CALayer твердо находится в сфере View MVC, он часто содержит всю информацию о модели, которая мне нужна: x, y, bounds, color, content и т. д. Все, что я превратил в реальное приложение, хотя для удобства сопровождения пришлось переписывать большими частями.