Как создать и поддерживать кратные числа одного и того же объекта в Objective-C? - PullRequest
1 голос
/ 23 июня 2011

Я пытаюсь заставить несколько объектов Ball формироваться на экране и подпрыгивать.У меня это работает нормально для одного, но у меня проблемы с добавлением еще.В идеале количество шаров будет разным, но сейчас я пытаюсь просто поместить два в массив, чтобы изменить остальную часть кода.

Моя проблема в том, что все компилируется и работает нормально, но я все еще толькоесть один мяч.Вот где я подозреваю, что проблема возникает.

Я также чувствую, что делать это в viewDidLoad некорректно, но я не уверен, где оно на самом деле принадлежит.

viewDidLoad:

- (void)viewDidLoad {
[super viewDidLoad];

balls = [[NSMutableArray alloc] init];
CGPoint newPos = CGPointMake(5,5);

for(int i = 0; i < 2; i++) {
[balls addObject:[[[Ball alloc] init] autorelease]];
}

[[balls objectAtIndex:1] setPosition:newPos];

[NSTimer scheduledTimerWithTimeInterval:1.0 / 30.0 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];

}

- (void)onTimer
{
for(int i = 0; i < [balls count]; i++) {
    Ball *b = [balls objectAtIndex:i];
    [b update];
    [(BallView *)self.view refresh:b];
    }
}


- (void)refresh:(Ball *)aBall {
ball = aBall;
[self setNeedsDisplay];

}

Я добавил свой onTimer, я думал, что добавления задержки в создании шариков будет достаточно, чтобы сделать это неисключением.Все, что делает обновление, это изменяет скорость / направление на основе акселерометра / столкновений с краем экрана.

1 Ответ

1 голос
/ 24 июня 2011

Действительно, оба шара должны отображаться. Проверьте их координаты, чтобы увидеть, перекрываются ли они. С другой стороны, кажется, что вы пропускаете массив шаров, а также объекты ball1 и ball2. Вы выделяете их инициацию, поэтому вы должны освободить их в конце viewDidLoad или, если вы используете свойства сохранения, просто автоматически освободить их, когда вы устанавливаете их так, чтобы они сохранялись свойствами.

Что касается того, где должен находиться код, viewDidLoad должен быть в порядке, но рассмотрите возможность помещения массива шариков в метод init, который вы вызываете, чтобы создать свой ViewController, поскольку ваш ViewController, вероятно, не сможет работать без настройки этого массива.

...