Me encontré con un problema de Objective-C que no parece tener ningún sentido para mí. Soy un programador de ObjC relativamente versado y entiendo todo el concepto de "declaración avanzada", pero este me hace rascar la cabeza. Así que aquí está el trato:"No se puede encontrar el error de declaración de interfaz ..." después de @clase
ClassA es una clase en mi proyecto Xcode que es solo de proyecto. ClassB es una subclase de ClassA que es pública y se importa en el encabezado de mi marco.
Aparece el mensaje de error "No se puede encontrar la declaración de interfaz para 'ClassA', la superclase de 'ClassB' ..." al compilar. Ya he puesto la declaración forward @class ClassA;
en ClassB.h, pero eso no parece resolver el problema. Cuando cambio el @class ClassA;
al #import ClassA.h
, funciona bien. Sin embargo, dado que ClassA es solo de proyecto, los proyectos dependientes no pueden compilar ClassB porque no puede acceder a la fuente de ClassA.
Cualquier ayuda sería apreciada y espero que tenga sentido. ¡Gracias!
Hmm, pensé que como mucho. Sin embargo, eso me hace dudar qué hacer aquí. Supongo que la única ruta que me queda es hacer pública la superclase y simplemente documentar que no se recomienda el uso de la superclase. – Grimless
Ah, sí. Una superclase abstracta. Sugiero que leas sobre Class Clusters porque perpetúan un patrón de diseño similar. – bbum
Desafortunadamente, no creo que los grupos de clases resuelvan este problema. Los clústeres de clases ocultan subclases que proporcionan una funcionalidad específica. Estoy tratando de ocultar la * superclase * mientras sigo haciendo que las subclases estén disponibles públicamente. En cualquier caso, ¡gracias por la información! – Grimless