NSString *string=[temp objectAtIndex:row];
[temp removeObjectAtIndex:row];
从中string
创建不再存在的对象;我认为这个语法是直接赋值的,因此string
应该不再存在了,对吧?这个NSString不再存在吗?
因此,无论我用stringWithFormat
从对象创建一个新的字符串,或发送retain
到string
是安全的,这是正确的推理?
NSString *string=[temp objectAtIndex:row];
[temp removeObjectAtIndex:row];
从中string
创建不再存在的对象;我认为这个语法是直接赋值的,因此string
应该不再存在了,对吧?这个NSString不再存在吗?
因此,无论我用stringWithFormat
从对象创建一个新的字符串,或发送retain
到string
是安全的,这是正确的推理?
假如你不使用ARC或垃圾收集,是的,你对对象的内存管理的推理是正确的†。但是,您不想使用stringWithFormat:
。这需要一个格式化字符串,如果你传递了一个并非特意的东西,它可能会失败。你可以使用一个:
stringWithString:
如果你不想拥有
copy
如果你只是想确保你有一个安全的参考字符串(任选autorelease
如果你不” t计划保持长期参考)
retain
如果您一定要保留相同的对象 - 即使它是一个可变字符串 - 并且希望拥有所有权(您可能不希望此选项,因为与主要区别是该字符串可能会发生变异,你的下面)
†通过“正确的”,我的意思是你是对的,你不应该承担约超出该点对象的生命周期的任何东西。它可能还活着,但从技术上讲,这不是一个安全的假设。认为值得一提,因为有些人在这一点上并不是100%清楚。