大佬教程收集整理的这篇文章主要介绍了Swift:为什么我不能从override init调用方法?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
class serializable : NSObject{ override init() { } } class Device : serializable{ var uuid:string override init() { println("init ") self.uuid = "XXX" self.uuid = Device.createUUID() println(self.uuid) } class func createUUID() -> String{ return "XXX2" } } var device = Device()
您可以注意到我将createUUID方法实现为静态.
但是为什么我不能以静态的方式从init调用这个方法呢? :
class serializable : NSObject{ override init() { } } class Device : serializable{ var uuid:string override init() { // tried // super.init() println("init ") self.uuid = "XXX" self.uuid = self.createUUID() // ERROR self.uuid = createUUID() // ERROR println(self.uuid) // tried // super.init() } func createUUID() -> String{ return "XXX2" } } var device = Device()
没有继承它可以正常工作:
class Device { var uuid:string init() { println("init ") self.uuid = "XXX" self.uuid = self.createUUID() println(self.uuid) } func createUUID() -> String{ return "XXX2" } } var device = Device()
和
下面是它的工作原理.
override init() { super.init() // Fails safety check 1: uuid is not initialized. uuid = createUUID() }
反过来,
override init() { uuid = createUUID() // Fails safety check 4: cAnnot call an instance method before initialization is complete. super.init() }
以上是大佬教程为你收集整理的Swift:为什么我不能从override init调用方法?全部内容,希望文章能够帮你解决Swift:为什么我不能从override init调用方法?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。