gpt4 book ai didi

Swift:如何在子类的init方法中对指令进行排序

转载 作者:行者123 更新时间:2023-11-28 11:12:57 25 4
gpt4 key购买 nike

我需要实现这个类:

class PinImageView: UIImageView {

var lastLocation:CGPoint
var panRecognizer:UIPanGestureRecognizer

init(imageIcon: UIImage?, location:CGPoint) {
self.lastLocation = location
super.init(image: imageIcon)
self.center = location
self.panRecognizer = UIPanGestureRecognizer(target:self, action:"detectPan:")
self.gestureRecognizers = [panRecognizer]
}
}

我认为存在一种“循环”问题,因为编译器希望我在调用 super.init(image: imageIcon) 之前初始化 panRecognizer panRecognizerself 为目标,只有在调用 super init 方法后我们才能使用 self

我该如何解决这个问题?

最佳答案

这是一个非可选的实例变量

var panRecognizer:UIPanGestureRecognizer

因此您必须在完成 init 之前为它设置一个值,具体如您所见,在调用 super 之前。

它并不完全需要那样。相反,它可以是一个延迟加载实例变量,因此它是在您第一次请求它时创建的。

现在,当您init 时,您可以设置实例、调用 super,然后添加手势识别器(这将在此过程中创建手势)。

lazy var panRecognizer : UIPanGestureRecognizer = {
return UIPanGestureRecognizer(target:self, action:"detectPan:")
}()

关于Swift:如何在子类的init方法中对指令进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33823747/

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