Objective c 为什么在调试模式下使用CCLog和print时变量的值不同?
在至少玩了一次关卡之后,我游戏中的力量棒就不能正常工作了。所以我编写了一个使用CCLog注销一些变量的方法,并在update:method中调用这个方法。我还设置了一个断点,当这个问题出现时,它进入Xcode的调试模式,然后我使用print检查变量。但是,使用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命令之间的值似乎有所不同。这是一个解释一切的截图 这是我的截图: 它是否与多线程有关(我对此一无所知)?我检查了每个记录的变量的声明,以确保它们没有使用相同的名称多次声明。因为它在打印后被更改。在断点中,您正在查
它是否与多线程有关(我对此一无所知)?我检查了每个记录的变量的声明,以确保它们没有使用相同的名称多次声明。因为它在打印后被更改。在断点中,您正在查看新值。好的,问题解决了 当我编写一些委托时,我使用了“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的时间。我想一定是出了什么事。非常奇怪的是,如果你玩这个关卡一次,这个错误就不会发生,即使你玩这个关卡很多次,它也不会总是出现。这真让我发疯。