HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在Swift 1.2中将自身作为参数传递给init方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
以下类将’let’属性声明为隐式展开的变量.这之前适用于 Xcode 6.2:
class SubView: UIView {

    let pandGestureRecognizer: UIPanGestureRecognizer!

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.pandGestureRecognizer = UIPanGestureRecognizer(target: self,action: "panAction:")
    }

    func panAction(gesture: UIPanGestureRecognizer) {
        // ...
    }
}

更新到Xcode 6.3(使用Swift 1.2)后,会发生以下编译错误

Property 'self.panGestureRecognizer' not initialized at super.init call
Immutable value 'self.panGestureRecognizer' may only be initialized once

在super.init调用之前移动以下行:

self.pandGestureRecognizer = UIPanGestureRecognizer(target: self,action: "panAction:")

给出以下错误

'self' is used before super.init call

属性’panGestureRecognizer’不需要变异,因此必须将其声明为常量’let’.由于它是常量,因此必须在声明时具有初始值,或者在init方法中初始化它.要初始化它,需要在’target’参数中传递’self’.

其他线程建议将其声明为隐式解包可选,并在super.init调用后初始化它.这之前一直有效,直到我更新到Xcode 6.3.

有没有人知道这种情况的正确实施或解决方法

解决方法

问题

问题是你使用let-optionals声明为let没有给出认值nil(然而var是).以下是在Swift 1.2中引入的,否则将无效,因为在声明之后你将无法给myOptional一个值:

let myOptional: Int?

if myCondition {
    myOptional = 1
} else {
    myOptional = nil
}

因此,你得到错误属性’self.panGestureRecognizer’未在super.init调用’初始化’因为在调用super.init(coder:aDecoder)之前,因为panGestureRecognizer不是nil;它根本没有初始化.

解决方案:

1.将panGestureRecognizer声明为var,意味着它将被赋予认值nil,然后在调用super.init(coder:aDecoder)之后可以更改.

2.在我看来,更好的解决方案是:不要使用隐式展开的可选项,并使用初始值UIPanGestureRecognizer()声明panGestureRecognizer.然后在调用super.init后设置目标:

class SubView: UIView {
    let panGestureRecognizer = UIPanGestureRecognizer()

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        panGestureRecognizer.addTarget(self,action: SELEctor("panAction:"))
    }
}

大佬总结

以上是大佬教程为你收集整理的ios – 在Swift 1.2中将自身作为参数传递给init方法全部内容,希望文章能够帮你解决ios – 在Swift 1.2中将自身作为参数传递给init方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。