我已经处理了这个奇怪的问题了几天,我真的没有想法。
我在Unity for iOS中编程。这是陷入困境的代码片段:
if (!aux.IsDownloaded())
{
aux.restoreTransaction();
aux.DownloadItem();
}
真正奇怪的问题是始终执行aux.DownloadItem()。如果条件为真或假,则无关紧要。如果条件为真,则不应该进入' if'但它确实如此!它只是跳过第一行(restoreTransaction)并运行第二行(DownloadItem)。如果条件为假,则它只是正常运行。
为了发现更多的东西,我尝试了几件事:
我真的迷路了。我认为它可能是一个数据损坏,所以我删除了我的Unity项目中的Library文件夹并清除了Monodevelop缓存,但它一直在做这个奇怪的事情。
我不知道还有什么可以尝试。任何想法都会受到欢迎,请放下任何猜测,无论它听起来多么愚蠢,因为我真的没有想法,至少我想继续尝试。
编辑:经过一些测试后,设备运行的内容和我在monodevelop中调试的内容之间显然存在差异。也许是Unity 3D生成xCode项目的一个问题?
这是迄今为止我发现的最奇怪的事情。
亲切的问候,
Aernarion
答案 0 :(得分:0)
欢迎,
(我不能写评论,因为我的声誉,所以如果这不能帮助删除答案)
这不是一个真正的解决方案,但正如你写的那样:
不管你头脑里听起来多么愚蠢,只要放下任何猜测
如何更改最后一行?你试图用垃圾填充代码,除了有问题的部分。似乎该陈述是真的,然后运行最后一行...如果我是对的,那么你可以在Debug.Log("WEIRDPROBLEM")
之后插入一个新行。
希望它有所帮助,对不好的工程和“不评论”感到抱歉,
RAPTOR
答案 1 :(得分:0)
很可能它只是调试器的一个问题而且您的代码很好。您可以通过记录aux.IsDownloaded()的结果来确保它。类似的东西:
bool downloaded = aux.IsDownloaded();
Debug.Log(downloaded);
if (downloaded) {
...
}
如果记录了正确的值并且您的调试器踩到了错误的行,那么您在调试器中遇到了一个极端情况,或者由于某种原因,程序集的调试器元数据不同步。