Ответ 1
Даже в Obj-C использование макросов для констант и выражений - это то, что вы не должны делать. Принимая примеры из ваших комментариев:
#define NAVIGATIONBAR_COLOR @"5B79B1"
Было бы лучше как метод категории на UIColor
, например
+ (UIColor *) navigationBarColor {
return [UIColor colorWith...];
}
Макрос isPad
должен быть либо простой функцией
BOOL isIPad() {
return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad);
}
или снова метод категории, например. на UIDevice
[UIDevice isIPad]
определяется как
+ (BOOL)isIPad {
return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad);
}
Предварительно скомпилированные заголовки никогда не предназначались для совместного использования макросов ко всему вашему коду. Они были сделаны для включения в них заголовков фреймов, чтобы ускорить процесс компиляции. С введением модулей в прошлом году и теперь с возможностью создания пользовательских модулей вам больше не нужны предварительно скомпилированные заголовки.
В Swift ситуация одинаков - нет заголовков и макросов, поэтому нет предварительно скомпилированного заголовка. Вместо этого используйте расширения, глобальные константы или синглеты.