ios - 如何在操作后保留对数组的引用?

标签 ios arrays swift

如何在附加项目后保留对数组的引用?

更新了代码示例,因为之前的示例似乎不够清晰。

class ViewController: UIViewController {

    var numbers = Numbers.singleton.numbers

    override func viewDidLoad() {

        print(numbers.count)

        Numbers.singleton.add(1)

        print(numbers.count) // prints 0
        print(Numbers.singleton.numbers.count) // prints 1
    }
}

class Numbers {

    static let singleton = Numbers()

    var numbers: [Int]!

    private init() {
        numbers = []
    }

    func add(number: Int) {
        numbers.append(number)
    }
}

最佳答案

Swift 中的数组没有“引用”。它们是结构,结构是 value type .您的(错误命名的)arrayRef 是一个单独的副本,而不是对self.array 的引用。

此外,没有充分的理由想要做您(似乎)想做的事情。对可变数组同时进行两个引用是不安全的,因为数组可以在您背后更改。 Swift 的设计是明智的;使用它,不要颠覆它。

关于ios - 如何在操作后保留对数组的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37348845/

相关文章:

java - 打印二维数组中值的位置

ios - 尝试将数据从 UIPicker 发送到 Firebase 数据库

ios - 核心图形缓存

iOS 应用程序在使用 CMPedometer 功能时崩溃

ios - 如何将 CAGradientLayer 添加到 CAShapeLayer?

javascript - 问题迭代模板中的 Ember.js 对象

ios - 如何创建 ReloadRow 动画

javascript - 从多个 API 请求推送到全局数组

ios - 当应用程序进入后台时显示涵盖所有内容的窗口

ios - 当从显示搜索结果的另一个 View 返回时,如何将 UISearchBar 设为 "reset"?