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