Метод в Objective-C, который указывает на объект - PullRequest
2 голосов
/ 15 марта 2009

Я создал несколько спрайтов, используя класс спрайтов, и я загрузил их в массив. В моем приложении я зацикливаюсь на проверке массива на определенные условия (положение и т. Д.). Я хочу создать метод взрыва, чтобы я мог передать один из этих объектов, а затем с помощью указателя вытащить положение объекта на экране и показать там взрыв. Я не знаю, как передать указатель / объект, который находится в моем массиве, в метод, который будет использоваться.

Вот по сути то, что я имел в виду:

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;

}

Ответы [ 2 ]

3 голосов
/ 15 марта 2009

Вы бы написали это так для одного параметра

// 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];
0 голосов
/ 18 марта 2009

Почему бы не сделать ваш объект приемником взрыва?

for (id currentenemy in enemies)
{
    [currentenemy explode];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...