xCode - 即使调试器显示两个字符串不匹配,isEqualToString也返回true?

时间:2012-03-09 08:59:55

标签: objective-c audio nsstring

我在按钮按下功能中有一个非常简单的isEqualTostring条件,它使用上次播放的声音的名称,以及即将播放的声音的名称:

if([lastSoundPlayed isEqualToString:soundString])
{
    [audioPlayer stop];
}
else
{
    //sound player stuff
    lastSoundPlayed = soundString;//set lSP to match this sound
}

lastSoundPlayed变量最初设置为@“z4; 3b”,这是一个垃圾值,以确保它永远不会匹配任何真实的声音名称。 我的问题是,如果我在[audioPlayer stop]部分中断并且输入2个字符串,则表明值为'z4; 3b'和'alarm'。显然不同,但是为了使调试器达到该断点,它们需要是相同的。

问题发生在第一次按下按钮时。

为什么它会显示2个字符串之间的相等性?

由于

编辑:试过这个:

if([@"goodbye" isEqualToString:@"hello"])
{
     //break here
}

它仍然到达了断点?

1 个答案:

答案 0 :(得分:2)

'固定'这个我自己。

这是因为我仍然在Ad-Hoc模式下,而不是调试。我跨过断点,意识到它跳回到if语句,好像它首先忽略了它。然后再往下一点,我试图使用lastSoundPlayed变量,它无法访问内存位置 -