gpt4 book ai didi

iphone - NSString "initWithBytesNoCopy:length:encoding:freeWhenDone:"可以修改输入 "bytes"吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:54:59 25 4
gpt4 key购买 nike

- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding freeWhenDone:(BOOL)flag

"bytes"不是常量指针。这是否意味着该方法可能会修改“字节”?

最佳答案

您应该假设它可能会发生变异,因为那是签名并且没有其他文件可以否定它。

所以我的回答是:这是因为 SEL 的签名不会/不能为 NSMutableString 更改它被声明为非常量。

这里有一些 NSString 创建替代方案,它们建议在没有复制的情况下更安全:

  • CFStringCreateWithBytesNoCopy

  • CFStringCreateWithCStringNoCopy

  • CFStringCreateWithCharactersNoCopy

有问题的 NSString API 很有可能也使用了这些。

CF-API 为可变变体提供了更合适的函数,例如CFStringCreateMutableWithExternalCharactersNoCopy,这些可能是 NSMutableString 会使用的。

关于iphone - NSString "initWithBytesNoCopy:length:encoding:freeWhenDone:"可以修改输入 "bytes"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8019530/

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