Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 为什么在调试模式下使用CCLog和print时变量的值不同?_Objective C_C_Xcode_Cocos2d Iphone - Fatal编程技术网

Objective c 为什么在调试模式下使用CCLog和print时变量的值不同?

Objective c 为什么在调试模式下使用CCLog和print时变量的值不同?,objective-c,c,xcode,cocos2d-iphone,Objective C,C,Xcode,Cocos2d Iphone,在至少玩了一次关卡之后,我游戏中的力量棒就不能正常工作了。所以我编写了一个使用CCLog注销一些变量的方法,并在update:method中调用这个方法。我还设置了一个断点,当这个问题出现时,它进入Xcode的调试模式,然后我使用print检查变量。但是,使用CCLog和使用print命令之间的值似乎有所不同。这是一个解释一切的截图 这是我的截图: 它是否与多线程有关(我对此一无所知)?我检查了每个记录的变量的声明,以确保它们没有使用相同的名称多次声明。因为它在打印后被更改。在断点中,您正在查

在至少玩了一次关卡之后,我游戏中的力量棒就不能正常工作了。所以我编写了一个使用CCLog注销一些变量的方法,并在update:method中调用这个方法。我还设置了一个断点,当这个问题出现时,它进入Xcode的调试模式,然后我使用print检查变量。但是,使用CCLog和使用print命令之间的值似乎有所不同。这是一个解释一切的截图

这是我的截图:


它是否与多线程有关(我对此一无所知)?我检查了每个记录的变量的声明,以确保它们没有使用相同的名称多次声明。

因为它在打印后被更改。在断点中,您正在查看新值。

好的,问题解决了

当我编写一些委托时,我使用了“Strong”,这会导致一些保留周期。现在我将它们全部更改为“弱”,并将部署设置更改为iOS 5(或更高版本)

变量值不同的原因是,在CCLog中,该值属于新场景,但由于保留周期,有多个场景同时接收我的触摸。XCode、Cocos2d或CCBReader没有问题:-p


希望这个答案能帮助其他人。非常感谢@Cy-4AH。

请尝试呼叫
[self-cclogStrength]
内部
consumerstrength
。我很确定这些价值观都是一样的。我尝试了[自我力量],你是对的。这些值是相同的。这是否与释放上次播放的关卡场景有关?测试流程为:1运行游戏2选择关卡场景3玩关卡1 4赢,返回关卡场景5再玩关卡1。它只是在第5步中偶尔出现。我再次测试,发现Gamelayer场景的_strengthbar和包含错误的strengthbar的内存地址不同。但是当它是正确的(第一次播放)时,两个地址是相同的。我现在确信旧关卡的场景没有被正确地释放。因此,每一次触摸都会被两个场景接收。这个问题似乎与CCBReader有关。我不知道我能做些什么,因为我用的是ARC。从打印到中断大概只有1/60的时间。我想一定是出了什么事。非常奇怪的是,如果你玩这个关卡一次,这个错误就不会发生,即使你玩这个关卡很多次,它也不会总是出现。这真让我发疯。