【发布时间】:2011-10-31 00:11:25
【问题描述】:
我在名为 Enemy 的类中有一个名为 addEnemy 的方法,我想在另一个名为 EnemyLayer 的类中调用此方法。我会使用[Enemy addEnemy];,但它不是静态方法(-(void)addEnemy)。我该怎么做?
【问题讨论】:
标签: iphone class methods cocos2d-iphone call
我在名为 Enemy 的类中有一个名为 addEnemy 的方法,我想在另一个名为 EnemyLayer 的类中调用此方法。我会使用[Enemy addEnemy];,但它不是静态方法(-(void)addEnemy)。我该怎么做?
【问题讨论】:
标签: iphone class methods cocos2d-iphone call
您必须首先将Enemy.h 文件导入您的EnemyLayer 文件。然后,在您的EnemyLayer 文件中创建Enemy 类的实例。然后,您可以在该实例上调用 addEnemy 方法:
[instanceOfEnemyClass addEnemy];
(在您的示例中,您试图在整个 Enemy 类上调用该方法,但它不是类方法,因此您必须在该类的实例上调用它。)
【讨论】:
在 Enemy 下继承 EnemyLayer ? 尝试更具体地说明您的问题。
【讨论】:
您需要显示更多代码。您的问题令人困惑。
我想你想知道如何制作一个像这样完成的类方法:
+ (void) fooMethod
{
// Do stuff
}
这个方法不是在类的实例上调用的,而是在类本身上调用的。因此:
// Instance declaration
// The class is named FooClass and the instance of the class is _fooInstance
FooClass *_fooInstance;
// This will not work as it is calling for a
// instance method which does not exist.
[_fooInstance fooMethod];
// This will work as it is calling for a class
// method which does exist.
[FooClass fooMethod];
【讨论】: