我正在尝试使用 NSString
对象的 - (void)getCharacters:(unichar *)buffer range:(NSRange)aRange
方法,但我有一个第一个参数的问题。
此 NSString 中的字符数不固定,因此我需要动态分配缓冲区(缓冲区的大小必须类似于 [my_string length] * sizeof(UniChar)
)。
我是 Objective-C 的新手,不知道该怎么做。
我可以像在 C 程序中一样使用 malloc
(启用了 ARC)吗?
最佳答案
是的,您可以malloc()
适当大小的缓冲区。你必须free()
缓冲区
当不再使用它时,因为 ARC 不管理 malloc
ed 内存。
或者,使用 UTF-16 编码创建一个 NSData
对象:
NSString *string = @"H€llö Wörld";
NSData *data = [string dataUsingEncoding:NSUTF16LittleEndianStringEncoding];
const unichar *charsPtr = [data bytes];
charsPtr
只要 data
存在就有效,即只要您保持对它的强引用。
关于ios - Objective C 中的动态缓冲区(带 ARC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23297653/