【问题标题】:Calling a Static Method from a Different Class (cocos2d iPhone)从不同的类调用静态方法(cocos2d iPhone)
【发布时间】:2011-10-31 00:11:25
【问题描述】:

我在名为 Enemy 的类中有一个名为 addEnemy 的方法,我想在另一个名为 EnemyLayer 的类中调用此方法。我会使用[Enemy addEnemy];,但它不是静态方法(-(void)addEnemy)。我该怎么做?

【问题讨论】:

    标签: iphone class methods cocos2d-iphone call


    【解决方案1】:

    您必须首先将Enemy.h 文件导入您的EnemyLayer 文件。然后,在您的EnemyLayer 文件中创建Enemy 类的实例。然后,您可以在该实例上调用 addEnemy 方法:

    [instanceOfEnemyClass addEnemy];
    

    (在您的示例中,您试图在整个 Enemy 类上调用该方法,但它不是类方法,因此您必须在该类的实例上调用它。)

    【讨论】:

    【解决方案2】:

    在 Enemy 下继承 EnemyLayer ? 尝试更具体地说明您的问题。

    【讨论】:

    • 方法addEnemy在Enemy类中,我想在EnemyLayer类中使用。
    【解决方案3】:

    您需要显示更多代码。您的问题令人困惑。

    我想你想知道如何制作一个像这样完成的类方法:

    + (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];
    

    【讨论】:

      猜你喜欢
      • 2017-03-02
      • 1970-01-01
      • 2012-08-11
      • 2013-11-20
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      相关资源
      最近更新 更多