Swift中的正常数组vs'NSMutableArray'?

ada*_*603 3 arrays performance nsmutablearray swift

所以在Swift中,有什么区别

var arr = ["Foo", "Bar"] // normal array in Swift
Run Code Online (Sandbox Code Playgroud)

var arr = NSMutableArray.array() // 'NSMutableArray' object

["Foo", "Bar"].map {
    arr.addObject($0)
}
Run Code Online (Sandbox Code Playgroud)

除了是同一件事的不同实现.两者似乎都具有可能需要的所有基本功能(.count插入/移除对象等的能力).

NSMutableArray是在Obj-C时代发明的,显然是为了提供更现代的解决方案,而不是常规的C风格阵列.但它与Swift的内置阵列相比如何呢?

哪一个更安全和/或更快?

Woo*_*ock 9

在我看来,最重要的区别是NSMutableArray是类类型而Array是值类型.Ergo,NSMutableArray将作为引用传递,而Swift数组将按值传递.

更多NSMutableArray是NSObject的子类,而Array没有父类. - 这意味着在使用NSMutableArray时可以访问所有NSObject方法和其他"好东西".

修改它时不会复制NSMutableArray,Swift数组也是如此.

哪一个最好取决于您的应用程序.

我发现(当使用UIKit和Cocoa触摸时)NSMutableArray在我需要持久模型时很棒,而Array非常适合性能和丢弃数组.

这些只是我最初的想法,我相信社区中的某些人可以提供更深入的见解.