Hik*_*rus 0 inheritance initializer uiimage swift
我正在尝试使用添加的属性创建UIImage的子类,但是当我创建一个方便的init时,我无法调用UIImage的指定init init(命名为name:String),因为由于某种原因它不会被继承.
class myUIImage: UIImage {
var imageType$: String?
convenience init(imageName$ imageName$: String) {
self.init(...?)
self.imageType$ = // ...
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
UIImage不是设计为子类(你会注意到其文档中缺少"Subclassing notes").正如您所发现的那样,尝试将其子类化有许多棘手的小问题.这是在密切与核心基础类相关的Cocoa类很常见的(UIImage并且CGImageRef在这种情况下).
通常你应该用组合而不是继承来解决这个问题.创建一个包含image和imageType属性的新结构,然后使用它.
如果有更深层次的原因需要将类型附加到实数上UIImage,可以使用运行时技巧(请参阅参考资料objc_setAssociatedObject)来完成,但这应该保留用于无法合成的情况.最常见的是当您将对象传递给某个API时,该API稍后会将其传回给您,并且您需要传递一些旁道信息.我经常在处理时使用它UIAlertView,但通常简单的组合更好.