• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

NSMutableArray fehler

Pöhli

Gloster
Registriert
09.02.09
Beiträge
61
Hi Leute,
nachdem ich mich in letzter Zeit intensiv mit Cocoa und dem iPhone SDK auseinander gesetzt habe, habe ich beschlossen ein kleines App zu entwickeln:
Ihr kennt bestimmt alle das Spiel Blockimpact, also das Spiel wo man mit einer Kugel die obere Reihe freischießen muss. Naja egal.
Ich bin jetzt dabei mit der Kugel die Steine zu entfernen, dafür hab ich folgende methode geschrieben:

Code:
for (Steine *images in [anzeige subviews]) {
        NSLog(@"%i",[felder count]);
        if([felder containsObject:images])
        {
            NSLog(@"----> %@ %@ - Retain Count: %i",@"images.name", images.fileName, [images retainCount]);
        
            //if ([[images fileName] isEqualToString:@"stein.png"])
            if (CGRectContainsRect([images frame], [ball frame])) {
                [images setHidden:YES];
                [images removeFromSuperview];
            }
        }
    }


anzeige = UIView
Steine = subclass von UIImageView
felder = NSMutableString mit allen Feldsteinen
fileName = Property von der Steine Klasse
ball = UIImageView

So jetzt folgendes Problem:
Ich versuche herauszufinden ob das Object ein "Steine" Object ist. Images kann anscheinend auch die Superklasse annehmen, also UIImageView und demnach auch UIView, was ich nicht verstehe aber gut. Jetzt hab ich versucht mit [felder contains...] herauszufinden ob es wirklich ein Stein-Element bzw Object ist. Jedoch kann die Felder Variable (die auch als Property gemacht wurde) nicht gefunden werden, bzw. nur leer...
Falls ihr eine Alternative zur Lösungs des Problemes habt herauszufinden, welches Object gerade berührt wird, bitte ich um diese Information :)

mfg
Pöhli
 

Nero91

James Grieve
Registriert
26.02.11
Beiträge
138
Du kannst das doch ganz einfach machen um zu Prüfen ob es ein Stein ist. Weise doch jedem Img. eine bestimmte Beschreibung / Eigenschaft zu. Z.b. Stein.jpg hat die Eigenschaft Zerstörbar = FALSE, dann musst du nur noch beim durchlauf der Schleife prüfen ob das jeweilige Obj. Zerstörbar ist oder nicht ;)

Oder poste mal das gesamte Projekt dann zeige ich dir was ich meine.
 

Pöhli

Gloster
Registriert
09.02.09
Beiträge
61
Vielen Dank, aber das hätte nicht geklappt... Wie gesagt er sammelt auch die UIViews raus und hat damit diese Eigenschaft nicht... Aber ich hab jetzt einen Weg gefunden: mit isMemberOfClass:
Trotzdem würde ich gerne wissen warum er auch die UIImageViews mit einbezieht? Und dann noch, warum ich die globale Variable felder nicht weiterverwenden kann. Nur um nächstes Mal wenn ich vor so einem Problem stehe, verstehe warum das nicht geht.
Was ich noch vergessen habe zu sagen:
Wenn ich es in der DidFinishLauching Methode aufrufe funktioniert es, aber nicht bei meinem Accerometer vielen Dank :)