我如何交换两个NSString变量(在非垃圾收集环境中)?

lms*_*lms 0 iphone objective-c ios4

我正在尝试交换两个字符串,但我不确定我所做的事情是否合法(来自java我是整个保留计数内存管理的新手).

这是我的代码:

NSString *temp = [[NSString alloc] init];
temp = originalLanguageCode;
originalLanguageCode = translatedLanguageCode;
translatedLanguageCode = temp;
[temp release];
Run Code Online (Sandbox Code Playgroud)

这是允许的吗?我得到了一些奇怪的错误,我不确定是什么导致了它们,希望这可能是它.非常感谢任何帮助,谢谢!

Cor*_*ger 5

在为temp您分配新分配的字符串后,会立即originalLanguageCode为其分配,因此分配的字符串完全丢失.那是内存泄漏.然后你正在释放temp,这是最初的originalLanguageCode.这是一个过度释放.

试试这个:

NSString *temp = originalLanguageCode;
originalLanguageCode = translatedLanguageCode;
translatedLanguageCode = temp;
Run Code Online (Sandbox Code Playgroud)