据我所知,如果一个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
}
}
提前致谢:)
答案 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清除内存的方式。