- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在 UIView
的子类中,我声明了一个属性。此属性是 UIPanGestureRecognizer
的一个实例,不是可选的或隐式展开的。这是代码:
class DraggableView: UIView {
let panGestureRecognizer: UIPanGestureRecognizer
override init() {
panGestureRecognizer = UIPanGestureRecognizer(target: self, action: "dragged:")
super.init()
backgroundColor = UIColor.greenColor()
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
在 panGestureRecognizer
的初始化行中,Xcode 给出了一个错误:“self used before super.init call”。如果我将 super.init()
行移动到 panGestureRecognizer
初始化行上方,Xcode 会给出另一个错误:“Property self.panGestureRecognizer
not initialized at super.init
调用”。最后一次尝试是在 init
方法之外的声明中初始化 panGestureRecognizer
。像这样:
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: "dragged:")
这里 Xcode 给出了另一个错误:“Type DraggableView -> () -> DraggableView!
does not conform to protocol AnyObject
”
有没有办法在不使用可选值或隐式解包可选值的情况下完成这项工作?
最佳答案
问题是 self
在 super.init()
发生之前不存在。
您可以分两步创建它 - 在声明时初始化:
let panGestureRecognizer = UIPanGestureRecognizer()
然后在super.init()
之后,添加目标:
panGestureRecognizer.addTarget(self, action: "dragged:")
或者,您可以将其设置为 lazy var
,但我不喜欢设置变量,除非它们应该变化。
关于Swift 初始化悖论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27667069/
我有一些第三方类(class)。其精简版(为了简洁起见)功能如下: 提供两个类 ClassA 和 ClassB 供外部使用。这些类中的每一个类都与其他类完全无关(这意味着它们没有共同的祖先)。 有一个
我正在尝试在用户单击时为一个 div 设置动画,以便当前“主”div 移出视野,另一个 div 移入窗口,以便用户可以看到有关该事物的更多详细信息他们点击了。 我面临的问题是,我实现的用于将用户带回主
我有 3 个名为Discipline、DisciplineMembership、DisciplineManagement 的实体: 一个学科有多个学科成员 一个学科有多个学科管理 Discipline
在 Ruby 中,我们有 'bang' 方法 capitalize! 如果没有对字符串进行任何更改,它会返回一个 nil 的奇怪行为。 这意味着我无法将此命令与其他命令链接在一起,因为如果它返回 ni
人们已经无数次证明,yield return 比 list 慢。 示例:Is 'yield return' slower than "old school" return? 然而,当我尝试使用基准测试
列表基准:大小=1000,运行=50000,总时间=19.5 秒 var list = new List(Size); for (int i = 0; i { c = 0; for (i
我需要对 Paradox 数据库执行查询。有一个表,其中包含带有西里尔文字的数据,我正在尝试在这样的查询中使用西里尔文字参数: select * from AccessZone zn where zn
我是一名优秀的程序员,十分优秀!