如何知道 super class 指定的初始值设定项?

How to know super class designated initializers?

我需要 subclassing,编译器警告说 "Must call a designated initializer of the superclass",但我找不到它们,我应该在哪里寻找指定的初始化程序?,我想知道在哪里寻找独立于 class 的它们以供将来使用 classing.

代码:

import Foundation
import UIKit

class JBSOSLongGestureRecognizer: UILongPressGestureRecognizer {

    init() {

        super.init()

        self.allowableMovement = 40
        self.minimumPressDuration = 5
        self.cancelsTouchesInView = false
        self.numberOfTouchesRequired = 1
    }

}

UILongPressGestureRecognizer 继承自 UIGestureRecognizerUIGestureRecognizer 的指定初始化程序是 public init(target: AnyObject?, action: Selector).

覆盖 init(target: AnyObject?, action: Selector) 而不是 init()

我通过跳转到 UILongPressGestureRecognizer 的定义找到了指定的初始化器。我在那里没有看到初始化程序,但我确实看到它是 UIGestureRecognizer 的子类。进入 UIGestureRecognizer 声明揭示了 public 初始值设定项。

Apple API 文档中也提供了此信息。文档将在指定初始化程序旁边显示 Designated Initializer

UIGestureRecognizer Documentation

UILongPressGestureRecognizerUIGestureRecognizer 的具体子类。因此,虽然您可以使用 @JAL 方法对其进行子类化,但前提是它不打算被子类化。

在您的代码中,您似乎没有向 JBSOSLongGestureRecognizer 添加任何功能,为什么不直接使用 UILongPressGestureRecognizer 并使用您想要的值配置它呢?