如何在NSValue中正确保存局部变量的指针以供进一步使用

时间:2017-05-17 14:08:30

标签: objective-c

我有一个像下面这样的Objective-C函数:

 - (NSValue *)foo:(NSString *)str {
        NSValue* val = [NSValue valueWithPointer: str.UTF8String];

        char* ptr = [val pointerValue];

        return val;
 }

它接受参数NSString str。在函数内部,我得到字符串的UTF8表示,该字符串是复制字符串的字符(即strstr.UT8String的指针不同)。

现在,我将此指针信息存储在NSValue中并返回此NSValue以供进一步使用。 但是,我观察到str.UTF8String充当了这个函数的局部变量,因为我们从函数中退出,因此它的指针悬空。

因此,当我尝试使用NSValue中的指针重新创建字符串时,它会向我返回nil或随机值。偶尔,它也会给我带来真正的价值。

如何安全地保存str.UTF8String的指针以供进一步使用?

0 个答案:

没有答案