【问题标题】:Method in Objective-C that points to an objectObjective-C 中指向对象的方法
【发布时间】:2009-03-15 00:45:07
【问题描述】:

我使用 spriteclass 创建了一些 sprite,并将它们加载到数组中。在我的应用程序中,我循环检查特定条件(位置等)的数组。我想创建一个爆炸方法,我可以将这些对象之一传递给然后使用指针拉动屏幕上对象的位置并在那里显示爆炸。我不知道如何将数组中的指针/对象传递给要使用的方法。

这基本上是我的想法:

for (int i=1; i<4; i++) {

    EnemySprite *currentenemy = [enemies objectAtIndex:i-1];

    //Blow this guy up
    [self explosion:currentenemy]
}


-(void)explosion someobject {

    explosion.position = someobject.position

    someobject.setHidden=YES;

}

【问题讨论】:

    标签: objective-c pointers object methods


    【解决方案1】:

    你可以这样写一个参数

    // definition
    -(void) explosion:(EnemySprite*) someObject
    {
    
    }
    
    // usage
    [self explosion: object];
    

    对于两个参数,事情有点多。考虑;

    // definition
    -(void) explosion:(EnemySprite*) someObject radius:(float)explosionRadius
    {
      ...
      if (pos < explosionRadius)
      ...
    }
    
    // usage
    [self explosion: object radius:10.0f];
    

    : 之前的所有内容都用于外部名称,之后的所有内容都是函数内部的名称。

    这就是为什么你会经常看到 Objective-C 函数的函数名称以第一种类型的名称结尾:

    -(void) explodeSprite:(EnemySprite*) sprite radius:(float)radius;
    

    在编写函数时,精灵和半径参数似乎都被“命名”了;

    [self explodeSprite:sprite radius:10.0f];
    

    【讨论】:

      【解决方案2】:

      为什么不让你的物体成为爆炸的接收器?

      for (id currentenemy in enemies)
      {
          [currentenemy explode];
      }
      

      【讨论】:

        猜你喜欢
        • 2010-11-08
        • 2016-10-24
        • 1970-01-01
        • 2015-02-02
        • 2012-07-15
        • 2012-12-16
        • 2011-02-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多