Questione : Aggiornando UI manualmente

Ciao,

Is là un senso aggiornare manualmente UI?
per esempio, ho una funzione che aggiorna UI ed esegue qualche logic.
After l'aggiornamento di UI, esso eseguirò una certa logica che richiederà molto tempo e l'aggiornamento di UI deve essere attesa fino a che l'esecuzione di logica non sia finished.
Is là un senso aggiornare manualmente il befor di UI persino che la logica persino è eseguita? il

It sembra che il filetto possa essere utilizzato in here.
But sia là un senso risolvere questo da non using il filetto? il
Also, usando se il filetto può essere usato, che cosa è la pratica ottimale?

Thanks!
class= del

Risposta : Aggiornando UI manualmente

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

Ho detto di usare
[theView setNeedsDisplay: SÌ];

nel caso dobbiate aggiornare la vista. Potete farli dal filetto principale.
Capite questo senso? Forse, non capisco le vostre domande?

Circa i filetti. Sì, tutto il funzionamento lungo in qualunque lingua, per tutto il dispositivo, dovrebbe essere lanciato in un filetto separato. In IOS potete usare i filetti e NSThread di POSIX.
biblioteca di riferimento dell'IOS. Amministrazione del filetto
http://developer.apple.com/iphone/library/documentation/cocoa/conceptual/Multithreading/CreatingThreads/CreatingThreads.html

Direi di usare NSThread. Qui sono due lezioni private semplici:
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

L'idea è semplice. Generate il nuovo filetto:
[detachNewThreadSelector di NSThread: toTarget di @selector (threadMethod): withObject di auto: zero];
Il metodo del filetto dovrebbe essere come quello:
- threadMethod (vuoto) {
      *pool di NSAutoreleasePool = [[init del alloc di NSAutoreleasePool]];
      //Here è il codice.
      [rilascio dello stagno];
}

Se dovete fare qualcosa nel filetto principale da questo nuovo filettare:
[performSelectorOnMainThread di auto: withObject di @selector (UpdateUIMethod): waitUntilDone di zero: falso];
In quel metodo (sarà denominato nel filetto principale), potete aggiornare il UI.

Potete provare:
[performSelectorOnMainThread del theView: @selector (setNeedsDisplay: SÌ) withObject: waitUntilDone del myText: NESSUN];

(Lo ho scritto appena qui senza prova, ma dà un'idea)




Altre soluzioni  
 
programming4us programming4us