iOS Swift: NSMutableString vs [Character]哪个更适合已知的大小?



我正在做一些文本处理,包括将一些字符转换为字符串。输入是Character的长序列,输出是根据一定规则从Character序列创建的一系列字符串。

说:

let input = "The quick brown fox jumps over a lazy dog."

我想知道下面哪一个更有效率:

let buffer = NSMutableString(capacity: MAX_SIZE)
var result = [String]()
for c in input {
buffer.append(String(c))
if (isComplete(buffer)) {
result.append(String(buffer))
buffer.deleteCharacters(in: NSRange(location: 0, length: buffer.length))
}
}

vs:

var buffer = [Character]()
var result = [String]()
for c in input {
buffer.append(c)
if (isComplete(buffer)) {
result.append(String(buffer))
buffer.removeAll()
}
}

在我看来,第二种方法更好,因为它不必将每个字符转换为String以存储在NSMutableString中,但因为我们知道最大可能的缓冲区大小,第一种方法指定了可变字符串的capacity,其中可能在内存管理方面更好。内存重新分配时,添加更多的字符超出分配的内存空间为缓冲区?

谢谢!

我们必须理解NSMutableString提供了一个更受控制的包装器来操作字符。可以使用多个字符串

[Character]就像传统的数组一样。更多的手工工作和数组的所有限制。

相关内容

  • 没有找到相关文章

最新更新