• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

OOP-Problem

bginner

Ingrid Marie
Registriert
13.12.09
Beiträge
266
Irgendwie hab ich grad wieder nen Denkfehler, aber ich weiß echt nicht wie ich es elegant lösen kann.
Ich habe in meiner App drei Klassen (LeftView, MiddleView, RightView) in der Klasse MiddleView gibt es ein NSMutableArray mit dem Namen tableList. Ich möchte gerne daten darein schreiben. Dazu möchte ich über die Klasse LeftView Daten in das Array schreiben und ein anderes mal soll die Klasse RightView daten in das Array schreiben. Also habe ich mir gedacht ich definiere in der Klasse LeftView einfach ein Objekt der Klasse MiddleView und gut ist. das geht zwar, aber wie greife ich dann von der RightView das Array zu? Denn wenn ich jetzt in der RightView ein neues Object von MiddleView erzeuge dann hab ich zwei unterschiedliche Objekte auf deren Arrays ich zu greife. :-( Wie kann ich jetzt In der RightView auf das Array (tableList) zugreifen? Für euch OOP Profis ist das doch sicher kein Ding mir da den entscheidenen Hinweis zu geben.
Ich bedanke mich schonmal im Vorruas bei euch.
 
Getter und Setter benutzen. Referenzen unter den Objekten austauschen.

MacApple
 
Getter und Setter werden ja zum größten teil automatisch generiert mit @property das hab ich ja auch gemacht und ich aber von zwei klassen auf ein Objekt einer dritten zuzugreifen das will nicht funktionieren. hat jemand vielleicht ein kleines Beispiel? Daraus lern ich immer am meisten...

Ok also das müsste ungefähr so aussehen:
leftView.m
Code:
middleView *middleViewObject = [ [middleView alloc] init];
[middleViewObject.tableItems addObject:@"Test"];
das geht ja noch und ist auch klar.

Wenn ich dasselbe in der RightView mache und dann den Inhalt von tableView ausgeben lasse, ist das ergebniss null oder bestenfalls einfach leer, weil ich ja dann ein komplett neues Object habe. und jetzt fehlt mir echt der anstaz wie ich auf dieses Array zugreifen kann.
 
Zuletzt bearbeitet:
Du hast doch in "leftView" bereits ein middleViewObject erstellt. Was hindert Dich daran, von diesem Objekt eine Referenz an den rightView zu übergeben?

MacApple
 
Ja genau und da liegt mein Problem, da weiß ich nicht wie ich wie ich jetzt eine solche Referenz übergebe. Dabei kann sich das nur um 2-3 Zeilen handeln. kannst du mir die mal eben posten bitte? Das wäre echt sehr freundlich.
 
Benutze einfach den Setter für die entsprechende Property des RightViews.
Code:
rightView.theMiddleViewObjectProperty = middleViewObject;
MacApple
 
Hmm.. hab ich jetzt noch nicht so ganz verstanden. Welchen Setter und welche property meinst du? Vielleicht diese, die dann entstehen wenn ich ein Object vom rightView anlege? Also ich würde ja dann schreiben @property (nonatomic, retain) rightView *rightViewObject; soll ich dann die Setter Methode die normalerweise durch @synthesize erzeugt wird einfach überschreiben? Jetzt versteh ich gar nix mehr. Also im Posting #3 hab ich ja schon einen Anfang gemacht kannst du das vielleicht so ergänzen das ich das gut verstehen kann? Wäre mir echt eine große Hilfe.
 
Ich glaube, Du musst erst einmal das Grundprinzip der objektorientierten Programmierung verstehen. Dein Posting #3 kann man nicht einfach so ergänzen, so dass Du das gut verstehst. Denn diese Ergänzung ist eigentlich das, was in meinem Posting #6 steht. rightView ist eine Referenz auf Deine RightView-Instanz. theMiddleViewObjectProperty ist eine Property Deiner RightView-Klasse. Die kann bei Dir natürlich anders heißen oder noch gar nicht vorhanden sein. Das weiß ich ja nicht. Na und middleViewObjekt ist halt die MiddleView-Instanz, die du in Deinem Posting #3 erstellt hast.

Wenn Du dass nicht auf Dein Projekt umsetzen kannst, fehlen Dir absolute Grundlagen. Die brauchst Du aber unbedingt, wenn Du ernsthaft programmieren willst und die kannst Du nicht erst irgendwann später nachholen.

MacApple
 
Du hast hier im Forum ja unzählige solche Threads aufgemacht und es ging eigentlich immer um dasselbe: Wir durften immer wieder erfahren, dass dir die Grundlagen fehlen. Jedoch hat bis jetzt jeder Versuch, dir das beizubringen, fehlgeschlagen und du fragst immer wieder dasselbe.

Ich lege es dir noch einmal - hoffentlich das letzte Mal - ans Herz: lies einführende Literatur! Die Tutorials sind meistens einfach grottenschlecht, weil einem zwar gezeigt wird, wies geht, einem aber nicht erzählt wird, was eigentlich passiert, wenn man das so macht, geschweige denn einem beibringt, wieso man es so machen soll/muss. Es gibt Leute, die bekommen dann die Grundlagen dadurch, ich - und du auch - definitiv nicht.

Warum ich weiss, dass du Tutorials machst: schon nur die Benennung deiner Klassen ist so Tutorialmässig. Mam sieht ja von aissen nicht, was diese Klassen dann machen. Ich würde sie zweckmässig benennen. Aber von den Tutorials her kennst du ja nichts anderes...

Hoffentlich sind da nicht allzuviele Tippfehler.

Gruss ppocket

Sent from my HTC Desire using Tapatalk