Мой код в UITableViewController:
delegate.myData = [myData objectAtIndex:indexPath.row];
Как я могу увидеть значения delegate.myData
или indexPath.row
в отладчике? delegate.myData
должен быть массивом и indexPath.row
файлом int
. Я могу видеть только адреса памяти объектов delegate
и , indexPath
но где myData
и row
?
po obj
в быстромpo print(obj)
.Я согласен с другими авторами, что Xcode как среда разработки должна включать простой способ отладки переменных. Что ж, хорошие новости, она ЕСТЬ!
После поиска и не найденного простого ответа / учебника по отладке переменных в Xcode я пошел исследовать сам Xcode и нашел это (по крайней мере для меня) очень полезным открытием.
Как легко отлаживать переменные в Xcode 4.6.3
На главном экране Xcode убедитесь, что вы видите нижнюю область отладки, нажав кнопку в верхнем правом углу, показанную на снимке экрана.
Теперь установите точку останова - строку в коде, где вы хотите, чтобы ваша программа остановилась, щелкнув границу области кода.
Теперь в области отладки найдите эту кнопку и нажмите кнопку посередине. Вы заметите, что ваша область теперь разделена на две части.
Теперь запустите ваше приложение.
Когда во время выполнения вашей программы будет достигнута первая точка останова, вы увидите слева все ваши переменные, доступные в этой точке останова.
Вы можете развернуть стрелки влево на переменной, чтобы получить более подробную информацию. И даже используйте поле поиска, чтобы изолировать ту переменную, которую вы хотите, и увидеть, как она изменяется в реальном времени, когда вы «входите» в область действия точки останова.
В правой части области отладки вы можете отправить переменные на печать по своему усмотрению, щелкнув правой кнопкой мыши нужную переменную.
Как видите, это контекстное меню полно очень интересных параметров отладки. Например, Watch , который уже предлагался с введенными командами, или даже Edit Value…, который изменяет значение времени выполнения вашей переменной!
источник
Также вы можете:
ИМХО немного скрытно и громоздко ...
источник
Ваше замешательство связано с тем, что объявленные свойства не являются (обязательно названы так же, как) (экземпляры) переменными.
Выражение
эквивалентно
и задание
эквивалентно
предполагая стандартное именование синтезированных свойств.
Более того,
delegate
вероятно, объявлен какid<SomeProtocol>
имеющий тип , т. Е. Компилятор не смог предоставить фактическую информацию о типеdelegate
в этот момент, а отладчик полагается на информацию, предоставленную во время компиляции. Посколькуid
это универсальный тип, во время компиляции нет информации о переменных экземпляра вdelegate
.Это причины, по которым вы не видите
myData
илиrow
как переменные.Если вы хотите проверить результат отправки
-row
или-myData
, вы можете использовать командыp
илиpo
:или используйте окно выражений (например, если вы знаете, что ваш
delegate
тип фактического типаMyClass *
, вы можете добавить выражение(MyClass *)delegate
или щелкнуть правой кнопкой мышиdelegate
, выбратьView Value as…
и ввести фактический типdelegate
(напримерMyClass *
).При этом я согласен, что отладчик может быть более полезным:
Может быть опция, указывающая окну отладчика использовать информацию о типе времени выполнения вместо информации времени компиляции. Конечно, это замедлит работу отладчика, но предоставит полезную информацию;
Объявленные свойства могут отображаться в группе, называемой свойствами, и допускать (необязательно) проверку непосредственно в окне отладчика. Это также замедлит работу отладчика из-за необходимости отправить сообщение / выполнить метод для получения информации, но также предоставит полезную информацию.
источник
Вы можете распечатать значения в окне консоли во время выполнения. Ниже приведены шаги:
источник
Это немного усложняется. Эти объекты представляют собой настраиваемые классы или структуры, и заглянуть в них в Xcode не так просто, как в других средах разработки.
Если бы я был вами, я бы NSLog значений, которые вы хотите видеть, с некоторым описанием.
то есть:
источник
Попробуйте Run-> Show-> Expressions
Введите имя массива или то, что вы ищете.
источник