0

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

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

4

1 回答 1

-1

当你

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

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

知道如何创建两个字符串以了解究竟发生了什么会很有趣。我的猜测是第一个被释放得太快,所以调用失败;副本被保留并且调用成功。

只是为了快速尝试:

调用失败的函数时:

[self doMethodWithString:aString];

做就是了:

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

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

于 2012-06-25T15:31:35.250 回答