[英]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.