加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

访问变量在不同的类 – 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(),它将被调用在正确的实例上。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读