Différence entre et

Quelle est la différence entre appeler les methods avec les types suivants

1.

[self methodName]; 

et

2.

 [self performSelector:@selector(methodName)]; // no afterDelay is used 

Est-ce comme si performSelector utilise un thread différent pour fonctionner?

Dans la plupart des cas, ils sont équivalents.

Selon la documentation , le but de la variante performSelector: est de pouvoir appeler des methods définies dynamicment et non présentes lors de la compilation. C'est tout. Pour appeler une méthode présente à la compilation, il n'y a pas de différence entre les deux.