gpt4 book ai didi

objective-c - NSMutableData 的 mutableBytes 和 bytes 方法的区别

转载 作者:行者123 更新时间:2023-12-04 05:53:55 24 4
gpt4 key购买 nike

两者都返回相同的指针。我知道 - bytes属于 NSData ,为什么NSMutableData介绍 - mutableBytes ?是否只是为了代码清晰,以便更明显地访问可变数据?使用哪一个真的很重要吗?

NSMutableData* mydata = [[NSMutableData alloc] init];
[mydata appendData: [@"hello" dataUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"%p", [mydata mutableBytes]);
NSLog(@"%p", [mydata bytes]);

谢谢。

最佳答案

有几个原因 NSMutableData可能会提供单独的 mutableBytes方法:

  • 正如您在问题中所建议的,使用 mutableBytes向读者表明您要更改数据。
  • bytes方法返回 const void * . mutableBytes方法返回 void * .如果你想改变字节,你需要一个 void *没有 const预选赛。 mutableBytes方法消除了丢弃 const 的需要预选赛。

  • 理论上可能还有第三个原因: -[NSData mutableCopy]方法可能返回 NSMutableData指向与原始 NSData 相同的缓冲区,并且只有在您调用 mutableBytes 时才创建缓冲区的一个新的、可变的副本。 .但是,根据我非常有限的测试,我认为它不是以这种方式实现的。

    关于objective-c - NSMutableData 的 mutableBytes 和 bytes 方法的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9746944/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com