我如何替换#define 以供常见的 swift 和 objective-c 使用
How can i replace #define for common swift and objective-c use
我们的产品是在 objective C 中编写的,我们已经开始在 swift 中编写新功能。
这是我们全局文件里写的东西-
#define SPXFontHelveticaBold(SIZE) [UIFont fontWithName:@"Helvetica" size:SIZE]
我无法在 swift class 中使用它。
swift 中没有宏,但您可以使用以下代码块实现相同的功能,returns UIFont
.
func SPXFontHelveticaBold (s:CGFloat) -> UIFont{
return UIFont (name: "Helvetica", size:s )
}
或者您可以定义一个 Helper struct
,它具有以下功能。
struct Helper {
static func SPXFontHelveticaBold(s: CGFloat) -> UIFont {
return UIFont (name: "Helvetica", size:s )
}
let font = Helper.SPXFontHelveticaBold(14)
Swift 不支持宏。 Apple docs 声明:
Declare simple macros as global constants, and translate complex macros into functions.
因此将其声明为全局函数并按照您之前使用的方式使用。
func SPXFontHelveticaBold(size: CGFloat) -> UIFont {
return UIFont(name: "Helvetica", size: size)
}
我已经用以下内容替换了我的 pragma:
static inline UIFont* SPXFontHelveticaBold(CGFloat SIZE) {
return [UIFont fontWithName:@"Helvetica" size:SIZE];
}
我们的产品是在 objective C 中编写的,我们已经开始在 swift 中编写新功能。
这是我们全局文件里写的东西-
#define SPXFontHelveticaBold(SIZE) [UIFont fontWithName:@"Helvetica" size:SIZE]
我无法在 swift class 中使用它。
swift 中没有宏,但您可以使用以下代码块实现相同的功能,returns UIFont
.
func SPXFontHelveticaBold (s:CGFloat) -> UIFont{
return UIFont (name: "Helvetica", size:s )
}
或者您可以定义一个 Helper struct
,它具有以下功能。
struct Helper {
static func SPXFontHelveticaBold(s: CGFloat) -> UIFont {
return UIFont (name: "Helvetica", size:s )
}
let font = Helper.SPXFontHelveticaBold(14)
Swift 不支持宏。 Apple docs 声明:
Declare simple macros as global constants, and translate complex macros into functions.
因此将其声明为全局函数并按照您之前使用的方式使用。
func SPXFontHelveticaBold(size: CGFloat) -> UIFont {
return UIFont(name: "Helvetica", size: size)
}
我已经用以下内容替换了我的 pragma:
static inline UIFont* SPXFontHelveticaBold(CGFloat SIZE) {
return [UIFont fontWithName:@"Helvetica" size:SIZE];
}