我们如何清空NSMutableData中的内容?

27

我们如何清除NSMutableData而不使用释放(release),然后再次重新分配(init)以便再次使用?我看到resetBytesInRange被设置为零,但我不确定这个方法是否正确。有人可以帮忙吗?

2个回答

63

如果你想要一个空的缓冲区:

[data setLength:0];

如果你想保留其大小但将所有字节设置为零:

[data resetBytesInRange:NSMakeRange(0, [data length])];

1
那么,[data setData:nil]; 呢? - karim
@karim 文档描述不够明确,但我刚刚测试了一下,在OS X 10.8上可以正常工作。 - benzado
1
我看到,如果我们使用第二个代码,'data'变量始终保持相同的内存(但所有内存都被删除-0000000)。因此,如果我们尝试将更多数据附加到'data'中,它将附加在该范围的末尾。例如,我的“data”有300个字节,我们称之为resetBytes,然后添加100个字节。'data'的长度将为400个字节(而不是100个字节)。根据策略,我们可以使用setLength或resetBytesInRange。 - Duyen-Hoa

0

将所有字节设置为零的 Swift 版本:

data.resetBytes(in: NSRange(location:0, length:data.length))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接