XCode: Klasse über kompletten Programmabruf verfügbar

  1. GeorgeDorn

    GeorgeDorn Thread StarterMacUser Mitglied

    Mitglied seit:
    17.06.2006
    Beiträge:
    4
    Zustimmungen:
    0
    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
     
    GeorgeDorn, 17.06.2006
  2. oneOeight

    oneOeightMacUser Mitglied

    Mitglied seit:
    23.11.2004
    Beiträge:
    48.163
    Zustimmungen:
    3.887
    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...)
     
    oneOeight, 17.06.2006
  3. Spacemojo

    SpacemojoMacUser Mitglied

    Mitglied seit:
    16.05.2004
    Beiträge:
    617
    Zustimmungen:
    21
    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
     
    Spacemojo, 17.06.2006
  4. GeorgeDorn

    GeorgeDorn Thread StarterMacUser Mitglied

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

    Wie mach ich das denn?

    "eventuell das objekt als referenz übergeben?"

    Danke schonmal für eure Hilfe!

    Phil
     
    GeorgeDorn, 19.06.2006
  5. StruppiMac

    StruppiMacMacUser Mitglied

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

    GremlinMacUser Mitglied

    Mitglied seit:
    11.01.2006
    Beiträge:
    742
    Zustimmungen:
    3
    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.
     
    Gremlin, 20.06.2006
Die Seite wird geladen...
Ähnliche Themen - XCode Klasse über
  1. Mankind75
    Antworten:
    10
    Aufrufe:
    298
    electricdawn
    21.06.2017
  2. Macy51
    Antworten:
    2
    Aufrufe:
    212
  3. freak2000
    Antworten:
    3
    Aufrufe:
    878
  4. freak2000
    Antworten:
    8
    Aufrufe:
    3.010
    freak2000
    24.06.2011
  5. Kokosnussbaum
    Antworten:
    0
    Aufrufe:
    733
    Kokosnussbaum
    28.03.2011