¿Cómo hacer que un submódulo marco Swift sea realmente privado?
He encontrado otra pregunta que trae más detalles sobre el problema y las posibles soluciones. Parece que hay un error conocido que está sujeto a futuras mejoras.
Clases de Objective C dentro de un marco dinámico basado en iOS Swift
Estoy desarrollando un marco en Swift y estoy usando un código Objective-C dentro del marco. Hasta ahora, mi mapa de módulo se ve así:
framework module MyModule {
umbrella header "MyModule-umbrella.h"
export *
explicit module Private {
header "MyTools.h"
}
}
Mi preocupación es que todas las API deMyTools.h
son visibles desde fuera del marco: por ejemplo, si instala el marco utilizando Cocoapods, entoncesimport MyModule
en su aplicación (no MyModule.Private), puede accederMyTools.h
lo cual no es deseable y redundante. ¿Hay alguna manera de hacer que MyTools sea invisible desde fuera del marco?
PD. Utilizo Cocoapods para distribuir el marco, aquí está mi podspec (la parte más importante):
s.module_map = 'Pod/MyModule.modulemap'
s.frameworks = 'CoreData', 'CoreTelephony', 'SystemConfiguration'
s.resources = 'Pod/Classes/MessageStorage/*.xcdatamodeld'
s.public_header_files = 'Pod/Classes/**/*.h'
s.private_header_files = 'Pod/Classes/MyTools/**/*.h'
s.source_files = 'Pod/Classes/**/*.{h,m,swift}'
PSS Mi encabezado paraguas no importaMyTools.h
PSSS Solo intenté excluir el encabezado del módulo principal:
framework module MyModule {
umbrella header "MyModule-umbrella.h"
export *
exclude header "MyTools.h"
explicit module Private {
header "MyTools.h"
}
}
Sin suerte.