【问题标题】:Expected Identifier in Function Declaration in SwiftSwift 函数声明中的预期标识符
【发布时间】:2016-08-21 10:21:03
【问题描述】:

我正在尝试在我的自定义 UIButton 类上编写一个简单的 init 方法。

但它说:

函数声明中的预期标识符

我的方法如下,

override func init(frame: CGRect) {

}

我为此错误搜索了大量答案,但没有成功。

【问题讨论】:

    标签: ios swift function methods


    【解决方案1】:

    您不能使用 func 关键字编写 init。你需要这样写:

    class myButton: UIButton {
    
      override init(frame: CGRect) {
        super.init(frame: frame)
      }
    
      required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
      }
    }
    

    根据 Apple 文档:

    实现初始化器的每个 UIView 子类都必须包含 init?(coder:) 的实现。 Swift 编译器知道这一点,并提供了一个修复它来在你的代码中进行这种更改。编译器提供 Fix-it 作为代码中错误的潜在解决方案。

    https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson5.html

    【讨论】:

      【解决方案2】:

      省略func

      override init(frame: CGRect) {
          // ...
      }
      

      【讨论】:

      • 我也试过了,然后说需要 init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") }
      • 是的,这意味着(惊喜!)您还必须实现该初始化程序。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      相关资源
      最近更新 更多