NSString的奇怪行为

时间:2012-06-25 15:26:20

标签: iphone ios

我有一个NSString作为参数传递给我的库函数,NSString由另一个库传递。奇怪的是,如果我将NSString传递给库调用,则调用将失败,但是如果我将NSString转换为int然后将int转换回来到NSString,一切都很好。

但是通过使用NSLog("%@")打印出来,两个字符串是相同的。可能是什么原因导致的编码

1 个答案:

答案 0 :(得分:-1)

当你

  

将NSString转换为int,然后将int转换回NSString

你基本上是在创建一个与原始字符串无关的字符串副本。

知道如何创建两个字符串以了解究竟发生了什么将会很有趣。我的猜测是第一个太快解除分配,所以呼叫失败;保留副本并且呼叫成功。

只是为了快速尝试:

调用失败的函数时:

[self doMethodWithString:aString];

只是这样做:

[aString retain];
[self doMethodWithString:aString];

如果这样可行,那么内存管理问题就会得到确认,但对于真正的修复,您应该解释如何创建字符串......