J'ai créé une application de test pour exécuter une boucle de compteur profond. Je lance la fonction de boucle dans le thread d'arrière-plan en utilisant performSelectorInBackground et NSOperation sous-classe séparément. J'utilise également performSelectorOnMainThread pour notifier le thread principal dans la méthode backgroundthread et [NSNotificationCenter defaultCenter] postNotificationName dans la sous-classe NSOperation pour notifier le thread principal de la mise à jour de l'interface utilisateur. Initialement à la fois l'implémentation me donnant le même résultat et je suis en mesure de mettre à jour l'interface utilisateur sans avoir de problème. La seule différence que j'ai trouvée est le nombre de Thread entre deux implémentations.Différence entre performSelectorInBackground et NSOperation Sous-classe
La mise en œuvre performSelectorInBackground a créé un fil et se est terminée au bout de la boucle terminée et mon application fil compte va de nouveau à 1.
La mise en œuvre de la sous-classe NSOperation a créé deux nouveaux threads et garder existe dans l'application et je peux voir 3 fils de discussion après la boucle a fini dans la fonction principale(). Donc, ma question est pourquoi deux threads ont été créés par NSOperation et pourquoi ils ne se sont pas terminés comme la première implémentation de threads d'arrière-plan?
Je suis un peu confus et incapable de décider quelle implémentation est la meilleure en termes de performance et de gestion de la mémoire.
Il semble que NSOperationQueue conserve les threads et ne les a pas libérés. Des pensées à ce sujet? – AmitSri