具有本地引用的结构与具有本地引用的类?迅捷的表现

时间:2016-08-11 09:08:57

标签: ios swift performance memory

据我所知,如果一个struct包含多个引用作为属性存储,它的分配(2 *引用)比一个类更昂贵。 局部变量中的情况是否相同?

struct ViewNavigationRouter {

    private let firstViewController : UIViewController

    init(firstViewController: UIViewController) {
        self.firstViewController = firstViewController
    }

    func navigate(from: UIViewController) {

        let viewController1 : UIViewController = xxx
        let viewController2 : UIViewController = xxx
        let viewController3 : UIViewController = xxx
    }
}



class ViewNavigationRouter {

    private let firstViewController : UIViewController

    init(firstViewController: UIViewController) {
        self.firstViewController = firstViewController
    }

    func navigate(from: UIViewController) {

        let viewController1 : UIViewController = xxx
        let viewController2 : UIViewController = xxx
        let viewController3 : UIViewController = xxx
    }
}

提前致谢:)

1 个答案:

答案 0 :(得分:0)

看起来,在这种情况下,结构ViewNavigationRouter和类ViewNavigationRouter中的所有成员都是 - 类的实例(firstViewController:UIViewController)。我没有看到更广泛的背景,但它看起来像这里。

我建议你读这个 https://developer.apple.com/library/prerelease/content/documentation/Swift/Conceptual/Swift_Programming_Language/ClassesAndStructures.html 很多时候,特别关注零件结构和枚举是值类型和类是参考类型。

最重要的区别在于,复制内容标识符时发生的事情是"指向"。我建议你进一步阅读:

https://developer.apple.com/library/prerelease/content/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.htm 并看看例子。你会发现差异不是关于内存性能,而是关于ARC清除内存的方式。