/ / Jak utworzyć i zachować wielokrotności tego samego obiektu w Objective-C? - cel-c, obiekt, odbicie

Jak utworzyć i zachować wielokrotności tego samego obiektu w Objective-C? - cel-c, obiekt, odbicie

Próbuję stworzyć wiele obiektów Ballna ekranie i odbijaj się. Mam go dobrze działającego dla jednego, ale mam problemy z dodawaniem więcej. Idealnie, ilość kulek będzie różna, ale na razie próbuję po prostu wstawić dwa do tablicy, aby zmienić resztę kodu.

Mój problem polega na tym, że wszystko się kompiluje i działa dobrze, ale wciąż mam tylko jedną piłkę. Tutaj podejrzewam, że problem się pojawia.

Mam również ochotę zrobić to w viewDidLoad jest niepoprawny, ale nie jestem pewien, gdzie faktycznie należy.

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

}

Dodałem mój OnTimer, myślałem, dodając opóźnieniew tworzeniu kulek wystarczyłoby, żeby to nie było. Cała aktualizacja polega na zmianie prędkości / kierunku w oparciu o akcelerometr / kolizje z krawędzią ekranu.

Odpowiedzi:

1 dla odpowiedzi № 1

Rzeczywiście, obie piłki powinny być wyświetlane. Sprawdź ich współrzędne, aby zobaczyć, czy się pokrywają. Z innej notatki wynika, że ​​masz wyciek z tablicy piłek, a także z obiektów kuli1 i kulki2. Przydzielasz je do inicjowania, więc musisz zwolnić je na końcu viewDidLoad, lub jeśli używasz właściwości retain, po prostu autorelease je, gdy je ustawisz, aby zostały zachowane przez właściwości.

Jeśli chodzi o lokalizację kodu,viewDidLoad powinno być w porządku, ale rozważ wstawienie tablicy kulek do metody init, którą wywołujesz, aby utworzyć swój ViewController, ponieważ prawdopodobnie nie ma możliwości, aby Twój ViewController mógł działać bez ustawiania tej tablicy.