问题描述
我有一个const char *
(或const string&
),我想将其小节附加到NSMutableString
。
我认为我可以做到
// s: const char *
// start,end: size_t
[anNSMutableString appendString:[[Nsstring alloc]
initWithBytesNocopy:s+start
length:end-start
encoding:NSUTF8StringEncoding
freeWhenDone:NO]];
这是行不通的,因为initWithBytesNocopy
中的Nsstring
按照Apple文档需要void *
:
- (instancetype)initWithBytesNocopy:(void *)bytes
length:(NSUInteger)len
encoding:(nsstringencoding)encoding
freeWhenDone:(BOOL)freeBuffer;
另一方面,initWithBytes
取const void *
。因此,如果我将其更改为使用initWithBytes
,则上面的代码将起作用。
问题:为什么Nsstring
initWithBytesNocopy
取void *
而不是const void *
?
这是我的思考过程:
- 我认为有充分的理由宣布
initWithBytesNocopy
代替void *
接受const void *
。 - 我能想到的唯一正当理由是
initWithBytesNocopy
可能会修改bytes
,或者将来对新创建的Nsstring
进行的操作可能会修改其内容。 - 死胡同。我怎么了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)