я поставил точку останова сразу после этих строк:Debugger ложно показывает объект как ноль, пока объект был использован
NSInteger index = [self.aCombobox indexOfSelectedItem];
NSString *nameSelected = [self.names objectAtIndex:index];
Если я затем свернуть мыши над nameSelected, он показывает значение А если «ноль». Я набираю «po nameSelected» в консоли отладчика, он говорит, что строка «не указывает на действительный объект».
Итак, я добавил NSLog для печати nameSelected, который правильно напечатал строку. И, как только отладчик окажется ниже строки NSLog, если я наматываю указатель мыши на nameSelected, он показывает правильное значение.
Есть ли причина, по которой отладчик ведет себя таким образом? Это затрудняет определение того, где настоящая проблема.
Вы, безусловно, строите отладочную сборку, а не сборку релизов? – Tommy 2010-12-02 17:24:19
Я делал выпускную сборку. Это была проблема. Поскольку отладчик, похоже, работает так же для приложений iPhone, запущенных на устройстве, как и для симулятора, я не думал, что выбор сборки будет иметь большое значение для отладки Cocoa. Следующая ссылка меня прямо: http://stackoverflow.com/questions/761628/xcode-cocoa-what-are-the-differences-between-debug-and-release-builds – Wienke 2010-12-03 02:21:15