Как сделать субмодуль Swift-фреймворка действительно приватным?
Я нашел другой вопрос, который приносит больше деталей относительно проблемы и возможных решений. Кажется, есть известная ошибка, которая является предметом будущих улучшений.
Классы Objective C в динамической структуре iOS Swift
Я разрабатываю фреймворк в Swift и использую некоторый код Objective-C внутри фреймворка. Пока что моя карта модуля выглядит так:
framework module MyModule {
umbrella header "MyModule-umbrella.h"
export *
explicit module Private {
header "MyTools.h"
}
}
Меня беспокоит то, что все API отMyTools.h
видны снаружи фреймворка: например, если вы устанавливаете фреймворк с помощью Cocoapods, то выimport MyModule
в ваше приложение (не MyModule.Private), вы можете получить доступMyTools.h
что не желательно и излишним. Есть ли способ сделать MyTools невидимым извне?
PS. Я использую Cocoapods для распространения фреймворка, вот мой подспек (самая значительная часть):
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. Заголовок моего зонтика не импортируетсяMyTools.h
PSSS. Просто попытался исключить заголовок из основного модуля:
framework module MyModule {
umbrella header "MyModule-umbrella.h"
export *
exclude header "MyTools.h"
explicit module Private {
header "MyTools.h"
}
}
Неудачно.