我有一个像下面这样的Objective-C函数:
- (NSValue *)foo:(NSString *)str {
NSValue* val = [NSValue valueWithPointer: str.UTF8String];
char* ptr = [val pointerValue];
return val;
}
它接受参数NSString str。在函数内部,我得到字符串的UTF8表示,该字符串是复制字符串的字符(即str
和str.UT8String
的指针不同)。
现在,我将此指针信息存储在NSValue
中并返回此NSValue
以供进一步使用。
但是,我观察到str.UTF8String
充当了这个函数的局部变量,因为我们从函数中退出,因此它的指针悬空。
因此,当我尝试使用NSValue
中的指针重新创建字符串时,它会向我返回nil
或随机值。偶尔,它也会给我带来真正的价值。
如何安全地保存str.UTF8String
的指针以供进一步使用?