pot*_*ato 6 overriding initialization uiimage subclassing ios
我正在重写 UIImage 类方法init(named:)。我的目标是能够检索图像的文件名。
代码如下所示:
class UIImageWithFileName: UIImage {
let fileName: String
override init(named:String){
super.init(named)
fileName = named
}
}
Run Code Online (Sandbox Code Playgroud)
由于以下原因,此代码似乎是不可能的。
我创建了一个 UIImage 的子类,开始输入 init... 令我惊讶的是没有 init(named:) 方法可以覆盖。这是 init 方法的完整列表:
如何覆盖UIImage init(named:)
事实证明“ init(named:”显然是不可继承的。
如果你查看 UIImage 定义,你会看到:
public class UIImage : NSObject, NSSecureCoding, NSCoding {
public /*not inherited*/ init?(named name: String) // load from main bundle
@available(iOS 8.0, *)
public /*not inherited*/ init?(named name: String, inBundle bundle: NSBundle?, compatibleWithTraitCollection traitCollection: UITraitCollection?)
Run Code Online (Sandbox Code Playgroud)
这意味着您需要自己解析或打开文件并将原始数据传递到超类中。