Frage : UI manuell aktualisieren

Hallo,

Is dort eine Weise, UI manuell zu aktualisieren?
zum Beispiel, habe ich eine Funktion, die UI aktualisiert und irgendein logic.
After das UI Update durchführt, es durchführe etwas Logik, die eine lange Zeit nimmt und Update von UI Wartezeit sein muss, bis die Durchführung von Logik finished.
Is dort eine Weise, UI befor manuell zu aktualisieren ist, sogar, welches die Logik sogar durchgeführt wird?

It scheint, dass Gewinde in here.
But benutzt werden kann ist dort eine Weise, dieses durch nicht using Gewinde zu lösen?
Also mit, wenn Gewinde benutzt werden kann, was ist das optimale Verfahren?

Thanks!

Antwort : UI manuell aktualisieren

In diesem Gewinde:
http://www.experts-exchange.com/Apple/Programming/Objective-C/Q_26411565.html?sfQueryTermInfo=1+10+30+setneedsdisplai

Ich erklärt zu verwenden
[theView setNeedsDisplay: JA];

falls Sie die Ansicht aktualisieren müssen. Sie können sie vom Hauptgewinde tun.
Verstehen Sie auf diese Weise? Möglicherweise verstehe ich nicht Ihre Fragen?

Über die Gewinde. Ja sollte jeder lange Betrieb in irgendeiner Sprache, für jede mögliche Vorrichtung, in ein unterschiedliches Gewinde gestartet werden. In IOS können Sie POSIX Gewinde und NSThread verwenden.
IOS-Bezugsbibliothek. Gewinde-Management
http://developer.apple.com/iphone/library/documentation/cocoa/conceptual/Multithreading/CreatingThreads/CreatingThreads.html

Ich sagen, NSThread zu verwenden. Sind hier zwei einfache Tutorien:
http://www.xprogress.com/post-36-threading-tutorial-using-nsthread-in-iphone-sdk-objective-c/
http://www.eigo.co.uk/Programming-threaded-processes-in-iPhone.aspx

Die Idee ist einfach. Sie herstellen neues Gewinde es:
[NSThread detachNewThreadSelector: @selector (threadMethod) toTarget: SelbstwithObject: Null];
Die Gewindemethode sollte wie die sein:
- (leeres) threadMethod {
      NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
      //Here ist der Code.
      [Lachefreigabe];
}

Wenn Sie etwas im Hauptgewinde von diesem neuen tun müssen, verlegen:
[SelbstperformSelectorOnMainThread: @selector (UpdateUIMethod) withObject: Null waitUntilDone: falsch];
In dieser Methode (sie benannt im Hauptgewinde), können Sie das UI aktualisieren.

Sie können versuchen:
[theView performSelectorOnMainThread: @selector (setNeedsDisplay: JA) withObject: myText waitUntilDone: KEIN];

(Ich schrieb es gerade hier ohne Prüfung, aber sie gibt eine Idee)




Weitere Lösungen  
 
programming4us programming4us