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

时间:2015-06-11 03:41:36

标签: swift inheritance initialization

我有一个抽象类

find.limit(1).first

我希望子类能够为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 } } var提供不同的(和实际的)值。但试着为我的生活,似乎没有任何工作。

maskImage

我已尝试class SubclassAnnoationView: AbstractDevicePrimaryAnnoationView { override let maskImage:UIImage! = UIImage(named: "mapValvePrimaryAnnotationMask")! } letvar。似乎没什么用。我收到各种编译器错误。我可以把它变成lazy var,但这似乎是一个警察。难道没有办法让子类指定自己的常量/静态值吗?希望这是一个惯用的。

1 个答案:

答案 0 :(得分:0)

你可以尝试

var maskImage: UIImage {
  return UIImage()
}

然后每个子类都做

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