在Swift 2中,三种阵列变体之间的主要区别是什么:
任何人都能用现实世界的例子来解释这个吗?
Dán*_*agy 12
来自文档:
ContiguousArray:
效率等同于Array的效率,除非T是类或@objc协议类型,在这种情况下使用ContiguousArray可能更有效.但请注意,ContiguousArray不会桥接到Objective-C.有关更多详细信息,请参阅与ContiguousArray共享大多数属性的Array.
基本上,无论何时将类或@objc协议类型存储在数组中,您可能需要考虑使用ContiguousArray而不是使用Array.
ArraySlice
ArraySlice始终使用连续存储,不会桥接到Objective-C.
警告:不建议长期存储ArraySlice实例
因为即使在原始数组的生命周期结束之后,ArraySlice也会在一些较大的数组的存储上显示视图,因此存储切片可能会延长不再可访问的元素的生命周期,这可能表现为明显的内存和对象泄漏.要防止此影响,请仅将ArraySlice用于瞬态计算.
当您想要从Array获取子范围时,大多数时候都会使用ArraySlices,例如:
let numbers = [1, 2, 3, 4]
let slice = numbers[Range<Int>(start: 0, end: 2)] //[1, 2]
Run Code Online (Sandbox Code Playgroud)
您应该使用的任何其他情况Array.
| 归档时间: |
|
| 查看次数: |
3953 次 |
| 最近记录: |