Resolviendo el error “literal-pointer@__OBJC@__cls” en XCode
Generalmente cuando uno es nuevo en el desarrollo de Mac empleado XCode/Cocoa se enfrenta a una seria de mensajes y errores poco comunes o que simplemente nunca habíamos visto. En un proyecto que estaba compilando en XCode casi al final de la compilación me salieron los siguientes errores:
“.objc_class_name_PTHotKey”, referenced from: literal-pointer@__OBJC@__cls_refs@PTHotKey in PomodoroController.o
“.objc_class_name_PTHotKeyCenter”, referenced from: literal-pointer@__OBJC@__cls_refs@PTHotKeyCenter in PomodoroController.o
ld: symbol(s) not found collect2: ld returned 1 exit status
simplemente WTF! parece una grosería del compilador!!
Después de pasar un muy buen rato investigando sobre este tipo de errores, que por equivocación se los atribuía al compilador, encontré en la ayuda de Apple y foros de que este error es ocasionado por el Linker al momento de ensamblar la aplicación y se debe a que en el código fuente se hace referencia a clases que no se encuentran incluidas en XCode, por ejemplo mediante #import, pero que probablemente físicamente existan en la ruta del proyecto pero no en XCode, por lo que no se encuentran los símbolos que requiere el Linker en el armado de la aplicación.
Por tanto la solución para esta situación es:
1. Agregar los archivos faltantes a XCode en la sección “Classes”.
2. En los “Targets” del proyecto agregar en “Compile Sources” los archivos faltantes agregado en el paso 1.
3. Aplicar un “Clean” / “Clean All Targets”.
4. Compilar la aplicación y listo!
Espero que este Tip sirva, ya que es poca la información que existe al respecto!
