/ / Wie kann man mehrere Objekte desselben Objekts in Objective-C erstellen und verwalten? - objektiv-c, objekt, hüpfen

Wie erstellt und verwaltet man ein Vielfaches desselben Objekts in Objective-C? - Ziel-C, Objekt, Bounce

Ich versuche, mehrere Ball-Objekte zu formenauf dem Bildschirm und hüpfen. Ich habe es gut funktioniert, aber ich habe Probleme, mehr hinzuzufügen. Idealerweise variiert die Anzahl der Bälle, aber im Moment versuche ich, nur zwei in ein Array zu bringen, um den Rest des Codes zu ändern.

Mein Problem ist, dass alles kompiliert und gut läuft, aber ich habe immer nur einen Ball. Hier vermute ich, dass das Problem auftritt.

Ich habe auch das Gefühl, dies in viewDidLoad zu tun, ist falsch, aber ich bin mir nicht sicher, wo es eigentlich hingehört.

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

}

Ich habe meinen onTimer hinzugefügt, dachte ich, die Verzögerung hinzuzufügenDas Erstellen der Bälle würde ausreichen, um dies zu einem Problem zu machen. Das gesamte Update besteht darin, die Geschwindigkeit / Richtung basierend auf dem Beschleunigungssensor / den Kollisionen mit dem Bildschirmrand zu ändern.

Antworten:

1 für die Antwort № 1

In der Tat sollten beide Bälle angezeigt werden. Überprüfen Sie ihre Koordinaten, um zu sehen, ob sie sich überlappen. Auf einem anderen Hinweis scheint es, als würden Sie das Balls-Array sowie die Objekte ball1 und ball2 verlieren. Sie müssen sie initialisieren, so dass Sie sie am Ende von viewDidLoad freigeben müssen. Wenn Sie Eigenschaften beibehalten verwenden, geben Sie sie einfach wieder frei, wenn Sie sie festlegen, damit sie von den Eigenschaften beibehalten werden.

Wo soll der Code liegen,viewDidLoad sollte in Ordnung sein, aber denken Sie daran, das Balls-Array in die init-Methode zu stellen, die Sie zum Erstellen Ihres ViewControllers aufrufen, da Ihr ViewController wahrscheinlich nicht funktionieren kann, ohne dass das Array eingerichtet wird.