XCode: Klasse über kompletten Programmabruf verfügbar

Dieses Thema im Forum "Mac OS X Entwickler, Programmierer" wurde erstellt von GeorgeDorn, 17.06.2006.

  1. GeorgeDorn

    GeorgeDorn Thread Starter MacUser Mitglied

    Beiträge:
    4
    Zustimmungen:
    0
    Registriert seit:
    17.06.2006
    Hallo!

    Ich probiere grade etwas mit XCode rum und nun interessiert mich, wo im Programm ich eine Klasse instanzieren muss, um sie über den kompletten Programmablauf verfügbar zu haben.

    Also, es fällt mir noch etwas schwer das zu erklären, deswegen versuche ichs nochmal ausführlich. Ich habe eine Benutzeroberfläche mit dem InterfaceBuilder gemacht, deren Outlets eine Klasse im Programm aufrufen. Nun möchte ich einige Daten, die hier anfallen auch weiterhin im Programm verfügbar haben. Dafür habe ich eine weitere Klasse gemacht, in die diese Daten per Methode geladen werden. Wo muss ich diese jetzt instanzieren damit sie "immer da bleibt"?

    Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt und danke für eure Hilfe,

    Philipp
     
  2. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.803
    Zustimmungen:
    3.631
    Registriert seit:
    23.11.2004
    wie wäre es in main bzw deinen haupteventloop? ;)

    (kann aber auch sein, dass du eventuell das objekt als referenz übergeben musst, um es in anderen objekten zu nutzen...)
     
    Zuletzt bearbeitet: 17.06.2006
  3. Spacemojo

    Spacemojo MacUser Mitglied

    Beiträge:
    616
    Zustimmungen:
    21
    Registriert seit:
    16.05.2004
    Schau dir mal das MVC-Konzept an (model-view-controller). Z.B. ist in der Cocoa-Dokumentation ein Artikel "Cocoa Application Tutorial Using Objective-C", in dem das erläutert wird.

    Tobi
     
  4. GeorgeDorn

    GeorgeDorn Thread Starter MacUser Mitglied

    Beiträge:
    4
    Zustimmungen:
    0
    Registriert seit:
    17.06.2006
    Refenz?

    Wie mach ich das denn?

    "eventuell das objekt als referenz übergeben?"

    Danke schonmal für eure Hilfe!

    Phil
     
  5. StruppiMac

    StruppiMac MacUser Mitglied

    Beiträge:
    2.835
    Zustimmungen:
    39
    Registriert seit:
    18.05.2006
    Du musst einer Methode, die ein (id) erwartet, Dein instantiiertes Objekt übergeben
     
  6. Gremlin

    Gremlin MacUser Mitglied

    Beiträge:
    743
    Zustimmungen:
    3
    Registriert seit:
    11.01.2006
    Ich verstehe dich richtig, dass die von der Klasse verwalteten Daten nicht dokumentbasiert sind und während des Programmablaufs nur eine einzige Instanz der Klasse existieren soll? Dann ist wahrscheinlich das Singleton-Pattern die beste Lösung. Das wird von Cocoa auch an diversen Stellen verwendet, z.B. beim NSNotificationCenter. Dazu fügst du deiner Klasse eine Klassenfunktion hinzu, die beim ersten Aufruf die Instanz erstellt und zurückgibt und bei allen weiteren Aufrufen nur noch die bereits erstellte Instanz zurückliefert. Das sieht dann in etwa so aus:

    Code:
    @interface MyClass : NSObject
    {
      ..
    }
    
    + (MyClass*)sharedInstance;
    
    ...
    
    @end
    
    
    
    @implementation MyClass
    
    static MyClass *sharedMyClass;
    
    + (MyClass*)sharedInstance
    {
      if (sharedMyClass == NULL) {
        sharedMyClass = [[MyClass alloc] init];
      }
      return sharedMyClass;
    }
    
    ...
    
    @end
    Dann kannst du von überall aus deinem Programm auf die Singleton-Instanz mit [MyClass sharedInstance] zugreifen, wobei du sicher sein kannst, dass das Objekt existiert und ohne dass du die Objektreferenz überall hin übergeben musst.

    Gremlin

    PS: Quellcode-Beispiel ist einfach in Beitragseditor reingehackt, keine Garantie auf korrekte Syntax.
     
Die Seite wird geladen...

Diese Seite empfehlen