Sem*_*nko 5 string performance bridge swift
我已经开始学习 Swift。我读到,当使用 Cocoa 类时,Swift String 被桥接到 NSString。这个操作的开销是多少?
来自iOS 开发者库
Swift 自动在 String 类型和 NSString 类之间建立桥梁。
来自 Swift 源 -> stdlib/public/core/String.swift
String与 Objective-C 桥接为NSString,String源自 Objective-C 的 a 可以将其字符存储在NSString. 由于 的任意子类都NSString可以成为String,因此在这种情况下无法保证表示或效率。由于NSString是不可变的,所以就好像存储被某些副本共享:第一个是任何变异操作序列都会导致元素被复制到唯一的连续存储中,这可能会花费O(N)时间和空间,其中N是字符串表示形式的长度(或更多,如果底层证券NSString具有不寻常的性能特征)。
这些是我从该段落中得出的结论。注意:NSString是不可变的,我不确定 NSMutableString 如何工作,这可能与您的具体情况相关。
NSStringtoString本质上是一个自由操作;无需转换。复杂度(1)
NSString使用 UTF-16 作为后备存储。String使用 UTF-16 或 ASCII,因此两个实例可以使用相同的内存。String结构,则需要从原始NSString. 在)
String如果不修改 的内存,则无法修改其后备内存NSString。这就是为什么内存必须被复制才能String拥有自己的内存。swift 使用的支持StringCore 的源代码。
| 归档时间: |
|
| 查看次数: |
1030 次 |
| 最近记录: |