Что у меня есть сейчас:
В моем приложении есть глобальная структура C, которая содержит цвета:
//Colors.h
extern struct MYColors *appColors;
struct MYColors
{
CGColorRef appBackgroundColor;
// ...Lots more colors follow
};
И соответствующий файл реализации:
//Colors.m
struct MYColors *appColors = calloc(1, sizeof(struct MYColors));
appColors->appBackgroundColor = CGColorCreateGenericRGB(23.0f/255.0f, 24.0f/255.0f, 26.0f/255.0f, 1.0f);
Это позволяет мне централизовать все цвета моего приложения.В различных пользовательских представлениях я пишу такой код в Objective-C:
- (void) updateLayer {
someCGLayer.backgroundColor = appColors->appBackgroundColor;
}
Что мне нужно:
Я начинаю переносить это приложение в Swift, и у меня естьНе удалось выяснить, как я могу получить доступ к импортированной версии этого C Struct.Я видел много постов по простым структурам, которые содержат int
, float
и т. Д.
Если у меня есть глобальный экземпляр (в основном одноэлементный) этой структуры, appColors
, как мне это сделать?получить доступ к членам этой структуры из Swift?
То, что я думал, будет работать:
Это не работает.Свифт утверждает, что MYColors
не имеет appBackgroundColor
:
let color: CGColor = UnsafePointer<MYColors>(appColors).appBackgroundColor
Я также подумал, может быть, мне просто нужно получить доступ к синглтону, как это:
let color: CGColor = UnsafePointer<MYColors>(MyModuleName.appColors!).appBackgroundColor
Но это тоже не работает.