大佬教程收集整理的这篇文章主要介绍了ios – 使用惰性变量时的编译错误,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
import UIKit class Test : UIViewController{ let i = 1 lazy var j:Int = self.i }
import UIKit class Test : UIViewController{ let i = 1 lazy var j = self.i }
我得到编译错误“类型的值’NSObject – >() – >测试’没有成员’我’”
有人可以解释编译器发生了什么.谢谢
>惰性存储属性是一个初始值不是的属性
计算直到第一次使用.那是你打电话的时候
该物业首次计算其价值.
>由于实际值是通过评估创建的,因此您需要声明
懒惰变量的数据类型预先.
>您在类中声明的属性是实例变量,
如果你需要访问它们的值,你需要一个实例(对象)
班级.
lazy var j = self.i
您的非工作代码中存在两个问题.首先,您尚未指定lazy var的数据类型.由于声明是不完整的,编译器不会将’j’视为lazy var,它将视为正常的实例变量.您必须了解swift的规则,即每当您在类中声明任何变量时,您必须为其指定一些值,否则您可以使该变量可选.在上面的语句中,您试图通过在类中使用self来将i的值赋给j.当编译器正在编译该行时,没有创建该类的对象,并且您使用的self是nil,这就是编译器抛出错误的原因(即使您因为上述相同的原因而不使用self,它也会抛出错误) .
为什么它不会导致您的工作代码出现问题:
lazy var j:Int = self.i
正如我上面提到的,当您调用该变量时,将赋予lazy var的值.你如何将这个变量称为类?当然是通过创建对象.当你在对象’self’的帮助下调用它时,它将指向同一个对象,self将不会为零,它不会导致任何问题.
总之,你需要了解两件事情
>在声明延迟var时,您必须指定数据类型> lazy var在声明时未分配,它在分配时分配叫做>如果没有类的实例(对象),则无法调用实例var
以上是大佬教程为你收集整理的ios – 使用惰性变量时的编译错误全部内容,希望文章能够帮你解决ios – 使用惰性变量时的编译错误所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。