我有一个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 *
?
这是我的思考过程: