Как я могу заменить #define для обычного быстрого и объективного использования c

Наш продукт написан в объективе C, и мы начали писать новые функции в быстром.

Это что-то написано в нашем глобальном файле –

#define SPXFontHelveticaBold(SIZE) [UIFont fontWithName:@"Helvetica" size:SIZE] 

Я не могу использовать это в своем быстром классе.

UIFont нет, но вы можете достичь такой же функциональности, используя следующий блок кода, который возвращает UIFont .

 func SPXFontHelveticaBold (s:CGFloat) -> UIFont{ return UIFont (name: "Helvetica", size:s ) } 

или вы можете определить struct Helper, которая выполняет следующие функции.

 struct Helper { static func SPXFontHelveticaBold(s: CGFloat) -> UIFont { return UIFont (name: "Helvetica", size:s ) } let font = Helper.SPXFontHelveticaBold(14) 

Swift не поддерживает макросы. В документах Apple указано, что:

Объявите простые макросы как глобальные константы и переведите сложные макросы в функции.

Поэтому объявляйте его глобальной функцией и используйте так же, как раньше.

 func SPXFontHelveticaBold(size: CGFloat) -> UIFont { return UIFont(name: "Helvetica", size: size) } 

Я заменил прагму следующим:

 static inline UIFont* SPXFontHelveticaBold(CGFloat SIZE) { return [UIFont fontWithName:@"Helvetica" size:SIZE]; }