访问变量在不同的类 – Swift
发布时间:2020-12-14 05:50:34 所属栏目:百科 来源:网络整理
导读:我有两个快速文件: main.swift和view.swift 在main.swift中,我有一个变量(Int)初始设置为0。 使用IBACtion我将该变量设置为10,一切都可以。 但是,如果我尝试从view.swift访问该变量,使用像main()。getValue()这样的简单调用,即使变量在main.swift中有
我有两个快速文件:
main.swift和view.swift 在main.swift中,我有一个变量(Int)初始设置为0。 使用IBACtion我将该变量设置为10,一切都可以。 但是,如果我尝试从view.swift访问该变量,使用像main()。getValue()这样的简单调用,即使变量在main.swift中有变化,我总是保持0而不是10。 main.swift中的getValue()方法如下所示: func getValue() -> Int { return variable } 编辑 这是代码(意大利语翻译:D) import Cocoa class Main: NSObject { var variable: Int = 0 func getValue() -> Int { return variable } @IBAction func updateVar(sender: AnyObject!) { variable = 10 } } class View: NSView { override func drawRect(dirtyRect: NSRect) { println(Main().getValue()) //Returns always 0 } } 提前致谢
在Swift的“文件”和“类”之间有一个重要的区别。文件与课程无关。您可以在一个文件中定义1000个类或在1000个文件中使用1个类(使用扩展名)。数据保存在类的实例中,而不是文件本身。
所以现在问题。通过调用Main(),您正在创建一个与您连接到Xib文件的实例无关的Main类的全新实例。这就是为什么值作为默认值出来。 您需要做的是找到一种方法来获得与Xib中相同实例的引用。不知道你的应用程序的架构,我很难提出建议。 有一个想法是,您可以使用View中的IBOutlet在Xib中添加对您的Main实例的引用。那么你可以简单地做self.main.getValue(),它将被调用在正确的实例上。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |