Objective c 这个字符串是否不再存在?

Objective c 这个字符串是否不再存在?,objective-c,Objective C,从中创建字符串的对象不再存在;我假设这个语法是直接赋值,因此string不应该再存在了,对吗 因此,我要么使用stringWithFormat从对象创建一个新字符串,要么将retain发送到string以确保安全,这是正确的推理吗?假设您没有使用ARC或垃圾收集,是的,您关于对象内存管理的推理是正确的†。但是,您不希望使用stringWithFormat:。这需要一个格式字符串,如果您传递的不是特定的字符串,它可能会失败。您可以使用以下选项之一: stringWithString:如果您不想要

从中创建
字符串的对象不再存在;我假设这个语法是直接赋值,因此
string
不应该再存在了,对吗


因此,我要么使用
stringWithFormat
从对象创建一个新字符串,要么将
retain
发送到
string
以确保安全,这是正确的推理吗?

假设您没有使用ARC或垃圾收集,是的,您关于对象内存管理的推理是正确的†。但是,您不希望使用
stringWithFormat:
。这需要一个格式字符串,如果您传递的不是特定的字符串,它可能会失败。您可以使用以下选项之一:

  • stringWithString:
    如果您不想要所有权

  • copy
    如果您只是想确保对字符串有一个安全的引用(如果您不打算长期保留引用,可以选择使用
    autorelease

  • retain
    如果您确实想要保留相同的对象(即使它是一个可变字符串),并且确实想要所有权(您可能不想要此选项,因为与
    copy
    的主要区别在于字符串可能会在您下面发生变异)

†所谓“正确”,我的意思是,您不应该对超出该点的对象生命周期进行任何假设,这是正确的。它可能还活着,但从技术上讲,这不是一个安全的假设。我觉得值得一提,因为有些人对这一点不是100%清楚

   NSString *string=[temp objectAtIndex:row];
   [temp removeObjectAtIndex:row];