Instanzvariablen von Klassenobjekten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Instanzvariablen von Klassenobjekten

    Hallo Leute,

    Ich habe immernoch einige Probleme damit, mit einem ViewController von einer anderen Klasse aus zu interagieren.
    Um die Methoden eines ViewControllers von woanders her zu benutzen, habe ich zuerst ein Objekt mit [[XYViewController alloc] initWithNibName:@"blabla" bundle:nil] erzeugt (gleich die erste Frage: reicht auch [[XYViewController alloc] init] ?)
    Ich bin bisher davon ausgegangen, dass damit sozusagen "irgendwie automatisch" DAS Singleton Objekt gemeint ist. Heute habe ich einmal ausprobiert, mehrere Objekte aus dem XYViewController zu erzeugen und der Compiler spuckt keine Fehler aus.
    Von diesen Unstimmigkeiten abgesehen, hat es dann aber immer gelappt, die Methoden des neu erzeugten Objektes wie gewollt aufzurufen. Methoden sind ja auch bei jedem Objekt gleicher Klasse gleich (wenn deren Ablauf nicht von den eigenen Instanzvariablen abhängig ist).

    Bei Instanzvariablen ist das ja eben nicht so.
    Und da habe ich jetzt mein Problem. Ich kann z.B. in einem ViewController gleich in die -viewDidLoad: reinschreiben "myIVar = 5;". Wenn ich aus einer anderen Klasse heraus dann die IVar des (nur scheinbaren Singleton-) Objektes abfrage, ist der Wert immernoch 0, obwohl das Singleton Objekt von dem OS die Nachricht -viewDidLoad eindeutig erhalten hat.

    Jetzt also noch einmal meine Frage, die ich auch schoneinmal vor einigen Monaten gestellt habe:
    Wie kommt man an das Singleton-Objekt, dass doch eigentlich immer aus einem Klassenobjekt gebildet wird?
    Oder Falls diese Frage schon vom Ansatz her falsch ist:
    Wie fragt man die Instanzvariablen eines Viewcontrollers ab?

    Gruß,
    druesbe
  • Falls Du den ViewController meinst, der beispielsweise bei einer View-based Application angelegt wird, der wird als Attribut / Property im App-Delegate abgelegt. Schau Dir die MainWindow.xib im Interface Builder doch mal in Ruhe an, wie das gemacht wird. Das kannst auch so machen. Da ist keine Magie bei.
    „Meine Komplikation hatte eine Komplikation.“