繁体   English   中英

目标C中的动态缓冲区(使用ARC)

[英]Dynamic buffer in objective C (with ARC)

我正在尝试使用NSString对象的- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange方法,但是第一个参数有问题。 此NSString中的字符数不是固定的,因此我需要动态分配缓冲区(缓冲区的大小必须类似于[my_string length] * sizeof(UniChar) )。

我是目标C的新手,不知道该怎么做。 是否可以像在C程序中一样使用malloc (启用了ARC)?

是的,您可以malloc()适当大小的缓冲区。 你必须free()的缓冲区,当它不再使用,因为ARC不会管理malloc版内存。

或者,使用UTF-16编码创建一个NSData对象:

NSString *string = @"H€llö Wörld";
NSData *data = [string dataUsingEncoding:NSUTF16LittleEndianStringEncoding];
const unichar *charsPtr = [data bytes];

只要data存在, charsPtr就是有效的,即只要您charsPtr引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM