gpt4 book ai didi

swift - 在 swift 中让不同的不同子类具有不同的默认值的惯用方式

转载 作者:行者123 更新时间:2023-11-28 09:05:56 24 4
gpt4 key购买 nike

我有一个抽象类

class AbstractDevicePrimaryAnnotationView: MKAnnotationView {

let maskImage:UIImage = UIImage()
var shape:CALayer

override init(annotation: MKAnnotation?, reuseIdentifier: String?) {
// init mine
self.shape = CALayer()
// init parents
super.init(annotation: annotation, reuseIdentifier: reuseIdentifier)
// additional setup
self.layer.addSublayer(self.shape)
self.shape.mask = CALayer()
self.shape.mask?.contents = self.maskImage.CGImage
}
}

我希望子类能够为 maskImage 变量设置不同的(真实的)值。但是为我的生活而努力,似乎没有任何效果。

class SubclassAnnoationView: AbstractDevicePrimaryAnnoationView {
override let maskImage:UIImage! = UIImage(named: "mapValvePrimaryAnnotationMask")!
}

我试过 letvarlazy var。似乎没有任何效果。我收到各种编译器错误。我可以将其设为 Optional,但这似乎是逃避。有没有办法让子类指定自己的常量/静态值?希望是惯用的。

最佳答案

你可以试试

var maskImage: UIImage {
return UIImage()
}

然后每个子类就做

override var maskImage: UIImage {
return //whatever image here
}

关于swift - 在 swift 中让不同的不同子类具有不同的默认值的惯用方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30771162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com