我有一个NSString
将作为参数传递给我的库函数的,NSString
它由另一个库传递。奇怪的是,如果我将 to 传递NSString
给库调用,调用将失败,但如果我将NSString
toint
然后转换int
回 a NSString
,一切都很好。
但是通过使用 打印出来NSLog("%@")
,这两个字符串是相同的。什么可能导致这种情况?编码?
当你
将 NSString 转换为 int,然后将 int 转换回 NSString
您基本上是在创建与原始字符串无关的字符串副本。
知道如何创建两个字符串以了解究竟发生了什么会很有趣。我的猜测是第一个被释放得太快,所以调用失败;副本被保留并且调用成功。
只是为了快速尝试:
调用失败的函数时:
[self doMethodWithString:aString];
做就是了:
[aString retain];
[self doMethodWithString:aString];
如果这可行,则内存管理问题得到确认,但对于真正的修复,您应该解释如何创建字符串......