我正在尝试为UIFont
创建扩展程序。但是这个节目错误描述如下
使用Objective-C选择器的方法'fontWithName(_:size :)' 'fontWithName:size:'与之前的声明冲突相同 Objective-C选择器
扩展类代码:
import UIKit
import Foundation
extension UIFont {
class func fontWithName(fontName: String, size fontSize: CGFloat) -> UIFont {
return UIFont(name: fontName, size: fontSize + 5)!
}
}
答案 0 :(得分:1)
此方法名称未达成一致,因为init
类中已存在UIFont
方法。
// Returns a font using CSS name matching semantics.
public /*not inherited*/ init?(name fontName: String, size fontSize: CGFloat)
现在,Swift会解析您的方法,并发现它与init
中的默认UIFont
方法类似。
// Returns a font using CSS name matching semantics.
+ (nullable UIFont *)fontWithName:(NSString *)fontName size:(CGFloat)fontSize;
尝试更改您的方法名称而不会失去其目的(名称告诉目的。)您将使您的方法有效。
示例:
func fontName(fontName: String, size fontSize: CGFloat) -> UIFont {
return UIFont(name: fontName, size: fontSize + 5)!
}
答案 1 :(得分:0)
Objective C不支持方法重载,因为NSFont是一个Objective C类,它已经有一个带有该名称的方法,它会导致冲突。但是,如果您仍然希望将该名称用于该方法,则可以查看此解决方案:https://stackoverflow.com/a/31500740/1949494。否则只需重命名该方法。