Objective c 游戏状态技术中虚拟虚空使用的目标C等价物

Objective c 游戏状态技术中虚拟虚空使用的目标C等价物,objective-c,inheritance,virtual,Objective C,Inheritance,Virtual,我很难实现一种游戏状态技术,这种技术允许我通过将当前状态存储在合适的变量中在不同的游戏状态之间切换 我创建了设置为当前状态的NSObject*currentState,但在尝试向[currentState方法]发送消息时,我收到了“可能不响应”错误消息。(由于NSObject类型的原因) 我还尝试创建一个名为Gamestate的超类模板,并在继承Gamestate的同时创建了各个Gamestate。然而,还有另一条错误消息,与gamestate对象中没有实现任何方法有关(这是正确的,因为我只想在

我很难实现一种游戏状态技术,这种技术允许我通过将当前状态存储在合适的变量中在不同的游戏状态之间切换

我创建了设置为当前状态的NSObject*currentState,但在尝试向[currentState方法]发送消息时,我收到了“可能不响应”错误消息。(由于NSObject类型的原因)

我还尝试创建一个名为Gamestate的超类模板,并在继承Gamestate的同时创建了各个Gamestate。然而,还有另一条错误消息,与gamestate对象中没有实现任何方法有关(这是正确的,因为我只想在子对象中实现这些方法)

不确定协议是否对我有帮助。关于如何在没有错误消息的情况下实现游戏状态,有什么建议吗

提前感谢;)

看一看


如果您声明
id currentState
而不是
NSObject*currentState
,您将不会得到
[currentState method]
的“可能不响应”警告,如果游戏状态不共享太多代码(或者您可以以不同的方式共享代码),那么一个抽象类是一个好主意,或者使用一个协议。也就是说,如果您要编写一个抽象类,但所有方法都是抽象的,并且类中没有代码,只有声明,那么协议可能更适合您所做的工作。

谢谢rob,添加id已删除错误消息。首先,我忘了从*currentState中删除“*”,我必须找出Id不接受指针类型的原因。再次感谢;)
id
是指针,因此不需要
*
。只要把
id
想象成类似于
NSObject*
但错误检查较少。感谢晨星,我考虑过使用协议,尽管我努力确保在类中实现必要的方法。协议主要是为了确保我不会忘记实现特定的方法吗?干杯:)您始终可以使用裸id变量,而不是带有协议的变量。协议就像你说的那样。它使变量具有强类型,因此必须在其中放入适当的对象。它允许您在编译时检查在运行时是否不会获得“无法识别的选择器”。