La différence entre [NSThread detachNewThreadSelector:] et -performSelectorInBackground
J'ai été en utilisant -performSelectorInBackground
dans la plupart de mes applications, sorte d'inconscient à -detachNewThreadSelector
. Maintenant, je me demande quelles sont les différences entre les deux. Sont presque interchangeables, ou il y a des différences et des lieux où l'un est supérieur à l'autre? Merci!
Vous devez vous connecter pour publier un commentaire.
Elles sont identiques. Voir la documentation.
performSelectorInBackground:withObject:
L'effet de l'appel de cette méthode est le même que si vous l'avez appelé le detachNewThreadSelector:toTarget:withObject: méthode de NSThread avec l'objet en cours, sélecteur, et les paramètres de l'objet en tant que paramètres.
Comme le dit Michael, ils sont identiques. Je pense que l'utilisation d'un thread par performSelectorInBackground:withObject: est plus facile plutôt que NSThread.
Cependant, NSThread peut contrôler sa priorité, stacksize, etc. Si vous souhaitez personnaliser le comportement, je recommande NSThread au lieu de performSelectorInBackground:withObject:.
Corey, si vous êtes en cours d'exécution sur un nouveau thread et vous êtes à l'aide de [objet autorelease], vous aurez besoin pour créer vos propres autorelease pool. Assez simple à faire:
[pool drain]
Intéressant les gars, vous ne pouvez pas pointer toutes les différences entre eux-
Je vais vous dire ce beaucoup. Nous avons une application pour iphone qui est enfermer alors que nous avons affiché la "l'activité internet" la divulgation de l'icône dans la barre du haut et une fenêtre qui dit "Envoi..." alors que nous avons envoyé un fichier audio à un serveur et
performSelectorInBackground:
ne fonctionnait PAS. Lorsque nous avons échangéperformSelectorInBackground
avecdetachNewThreadSelector
, il a bien fonctionné, mais maintenant, il se plaint qu'aucunautoreleased
objets fonctionnant dans ce thread sont susceptibles d'être libérés par la piscine.. peut-être que c'est parce que la piscine est dans le thread principal?