2010-11-26 3 views
1

J'ai une application TabBar qui affiche un uitableview au démarrage. Les données tableview sont accessibles par un fichier qui est stocké dans le répertoire de documents de l'application. Le fichier de données est très grand (60MB). Pour la première fois et uniquement sur certains appareils (3G), écrire dans l'annuaire prend trop de temps et iOS supprime l'application.indicateur d'activité dans l'application tabbar

Je voudrais ajouter un indicateur d'activité lors de l'écriture de ce fichier dans le répertoire, mais je n'ai aucune idée de l'endroit où je devrais le mettre. Dois-je charger un contrôleur de vue au démarrage, puis le rejeter lorsque l'écriture du fichier est terminée? En outre, je n'ai aucune idée de comment charger ce contrôleur, puis le rejeter et charger mon réel tableview. Aucune suggestion?

+0

Je ne suis pas à 100% et donc ne considère pas cette réponse. Mais WatchDog est en train de tuer votre application pour prendre trop de temps à répondre et l'ajout d'un indicateur d'activité ne va pas empêcher cela. Vous devriez regarder dans la résolution de votre problème de base - un fichier de données de 60 Mo. Peut-il être mis dans un magasin local au lieu d'un document? –

+0

non, il ne peut pas. Je souhaite qu'il pourrait. Je ne prendrai probablement pas en charge les appareils 3G, car c'est le seul appareil qui fonctionne. (d'ailleurs, les périphériques jb ne partagent pas ce problème, désactivent-ils le watchdog?) – treasure

+0

Peut-être que vous devriez démarrer votre application et l'afficher prendra du temps, puis démarrer la copie dans un thread d'arrière-plan et recharger la vue de table quand elle sera finie . Je suppose que watchDog ne va pas tuer votre application, puisque MainThread répond. – MetaImi

Répondre

1

le travail dans le répartiteur l'arrière-plan

dispatch_queue_t background_queue = dispatch_queue_create("com.your.rdns.notation", NULL); 
dispatch_async(background_queue,^{ 
    //do your work here... 

    dispatch_async(dispatch_get_main_queue(),^{ 
    //notify the ui here, when your task is done... 
    }); 
}); 

Il y a aussi un bon nombre de bonnes sessions de la WWDC WWDC10 - jetez un coup!

acclamations

Ron