xCode - isEqualToString возвращает true, даже если отладчик показывает, что обе строки не совпадают? - PullRequest
0 голосов
/ 09 марта 2012

У меня очень простое условие 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'. Совершенно разные, и все же для того, чтобы отладчик достиг этой точки останова, они должны быть одинаковыми.

Проблема возникает с первого нажатия кнопки.

Есть идеи, почему было бы показано равенство между двумя строками?

Спасибо

Редактировать: Только что попробовал это:

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

а оно все еще достигло точки останова?

1 Ответ

2 голосов
/ 09 марта 2012

«Исправил» это сам.

Это было потому, что у меня все еще было это в режиме Ad-Hoc, а не отладке. Я перешагнул через точку останова и понял, что он вернулся к оператору if, как если бы он проигнорировал его. Затем чуть дальше я попытался указать переменную lastSoundPlayed, и она не смогла получить доступ к области памяти -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...