Objective C эквивалент виртуальной пустоты - использовать в технике Gamestate - PullRequest
1 голос
/ 25 октября 2011

У меня возникают трудности при попытке реализовать метод игрового состояния, который позволяет мне переключаться между различными игровыми состояниями, сохраняя текущее состояние в подходящей переменной.

Я создал NSObject * currentState, который установлен в текущее состояние, но при попытке сообщить [метод currentState] я получаю сообщение об ошибке «возможно, не отвечает».(Из-за типа NSObject).

Я также попытался создать шаблон суперкласса под названием Gamestate и создал отдельные игровые состояния при наследовании от игрового состояния.Однако есть еще одно сообщение об ошибке, касающееся того факта, что в объекте gamestate не было реализовано никаких методов (что является правильным, поскольку я хочу реализовать только методы в подобъектах).

Не уверен, что протоколыПомоги мне.Любые предложения о том, как реализовать gamestate без сообщений об ошибках?

Заранее спасибо;)

Ответы [ 2 ]

0 голосов
/ 25 октября 2011

Абстрактный класс - хорошая идея, или используйте протокол, если GameStates не будет совместно использовать много общего кода (или если вы можете поделиться им по-другому). То есть, если бы вы написали абстрактный класс, но все методы были бы абстрактными, и в классе не было бы кода, только объявления, тогда протокол, вероятно, лучше соответствует тому, что вы делаете.

0 голосов
/ 25 октября 2011

Взгляните на Создание абстрактного класса в Objective C .

Если вы объявите id currentState вместо NSObject *currentState, вы не получите «может не отвечать»предупреждение за [currentState method].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...