2012-04-09 7 views
1

Ich habe eine Web-Service-Anwendung entworfen und App-Daten von meinem Server über einige GET-Anfragen abrufen .. In meiner Login-Klasse ich Benutzerdefaults eingeben und speichern sie in NSUSerDefaults, dann in viewDidLoad meiner Login-Klasse habe ich ein Steuerelement, wenn der Benutzer defaults werden gespeichert, indem ich sie der Texteigenschaft des Textfelds zuweise. Ich möchte diese Methode (Login-Methode) meiner Login-Klasse von der Delegatenmethode applicationDidFinishLaunchingWithOptions aufrufen. Nachfolgend finden Sie einige peoudo Code:Wie ruft man eine Instanzmethode einer anderen Klasse von AppDelegate auf?

//LoginClass.m 
@implementation LoginClass 
.... 
//needed things... 

-(ibaction)LoginMethod{ 
//the assingments&data fetchings ect 

} 

und ich möchte wie

unterhalb dieser Methode in meiner AppDelegate Klasse nennen
//....Appdelegate class 
    #import "LoginClass.h" 
    //.....other things.... 
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    { 
     LoginClass *myObj= [[LoginClass alloc]init]; 
     [myObj LoginMethod]; 
    } 

Wie kann ich das tun? Kurz über alle, wie kann ich eine Methode anderer Klassen von AppDelegate Klasse aufrufen? Hinweis: Ich benutze NSURLConnections und seine Delegatmethoden Daten zu holen, Fehler zu behandeln ect .. HINWEIS-2: I mit NSUserDefaults zu getaggt, weil ich es zu verwenden (bei der Kontrolle i Kontrolle ihres Inhalts)

EDITNach der Kontrolle von Standardeinstellungen in meinem viewDidLoad loginViewController, wenn es einen Wert in den Standardwerten gibt, möchte ich automatisch meine Login-Aktion aufrufen, ohne die Klicks des Benutzers.

+0

Können Sie diese Methoden in einem Singleton umgestalten? Weil Singletons ähnlich wie [UIApplication sharedApplication] verwendet werden können und Ihnen die gewünschten Methoden/Konstanten geben können. – Panagiotis

+1

Was stimmt eigentlich nicht mit dem was du hast? Sie erstellen eine Instanz und verwenden sie, um eine Instanzmethode aufzurufen. Wird 'LoginMethod' irgendwie nicht ausgeführt? –

+0

@Panagiotis nein, ich bin ich kann das im Moment nicht tun, aber ich kann dafür arbeiten – ilhnctn

Antwort

3

Da AppDelegate normalerweise die erste erstellte Klasse ist, können Sie hier die Objekte erstellen, an die Sie Nachrichten senden möchten. Wenn dieses Objekt sie erstellt, dann kennt dieses Objekt sie und es kann Nachrichten senden. obwohl

Ein Wort der Vorsicht,:

  • alles in Ihrem AppDelegate Laden wird Zeit in Anspruch nehmen. Wenn Sie zu lange brauchen, wird das Springboard Ihre App beenden.
  • Ich denke auch, dass Ihr Design ein wenig anspruchslos ist. Wenn Sie alles in AppDelegate erstellen werden, vermute ich, dass der Steuerungsfluss zurück zum AppDelegate springt, um Verweise auf andere Objekte zu erhalten. Das macht keinen modularen Code.