Au cours d'une refactoriser de un iOS de projet, je suis tombé sur cet ours d'un bug. Lors de la liaison de la phase, j'obtiens ce message:
ld: dupliquer le symbole _OBJC_IVAR_$_TinCanViewController.currentViewController dans /chemin/vers/TinCanViewController-E98A666B7AF2673A.o et /chemin/vers/TinCanViewController-E98A666B7AF2673A.o
Aussi loin que je peux dire, on dirait qu'il prétend TinCanViewController-E98A666B7AF2673A.o
déclare le symbole spécifié deux fois; les deux chemins sont pointant vers l'exact même .o fichier. J'ai couru nm
sur le fichier, et il ne comprenait que symbole d'une fois:
00008150 S _OBJC_IVAR_$_TinCanViewController.currentViewController
J'ai couru nm
sur tous les autres .o fichiers dans le répertoire pour voir si elles étaient en quelque sorte déclarant que cette symbole, aussi, mais ils ne sont pas. Cela arrive à n'importe quel membre je ajouter à la TinCanViewController classe - ce n'est pas spécifique à currentViewController.
Je sens que je dois être en quelque sorte de se lier à la classe deux fois, en quelque sorte, mais j'ai assez assidûment vécu et vérifié toutes les références à cette catégorie. Dans la version remaniée, il y a fondamentalement aucun. L'AppDelegate il comprend, mais pour l'instant il est fondamentalement juste un passthrough classe qui charge un autre ViewController au début. Pas d'autres classes dans le projet comprend-il.
Toutes les suggestions sur ce qui pourrait être à l'origine de ce ou comment je pourrais debug-il mieux?