Почему я не вижу свои метки в симуляторе iPad, когда использую точки останова во время отладки? - PullRequest
0 голосов
/ 09 марта 2011

Когда я строю и отлаживаю с точкой останова, установленной ВСЕГДА в коде, окно симулятора остается черным, и я не вижу свою метку. Если я собираю и отлаживаю без установки точек останова, я могу видеть свой ярлык. Кто-нибудь может помочь? Я хотел бы иметь возможность наблюдать за изменениями, происходящими с моими ярлыками, кнопками и т. Д., Когда я перебираю строки в отладчике Xcode. Кстати, моя программа использует код для динамического создания и размещения моей UILabel на главном экране.

Могут ли все остальные видеть свои ярлыки и кнопки во время отладки с точками останова? Я новичок в разработке iOS (4.2) и Objective-C.

Ответы [ 3 ]

0 голосов
/ 09 марта 2011

Вам нужно будет опубликовать свой журнал запуска, чтобы понять, почему ваш экран черный, когда вы устанавливаете точку останова.Я подозреваю, что вы устанавливаете точку останова перед циклом отрисовки, но ваш вопрос немного неясен по этому поводу.

Поскольку ваша цель - увидеть изменения в метке, когда вы шагаете по коду, этопредполагает неправильное понимание цикла рисования.По мере выполнения вашего кода он будет вносить изменения в структуры данных метки и, скорее всего, будет вызывать setNeedsDisplay: для метки (это обычно вызывается для вас автоматически при необходимости).Когда произойдет следующий цикл рисования, виды, отмеченные для отображения, будут перерисованы.Это приведет к вызову drawRect:, но это все равно не будет отображаться на экране.Это просто рисует в буфер.После того, как все вызовы drawRect: выполнены, буфер будет синхронизирован с экраном.

Нет смысла в этом цикле, чтобы вы могли установить точку останова для метода, такого как label.text = @"newstuff", и ожидать его просмотрапоявляются на экране, когда вы переступаете через него.

0 голосов
/ 09 марта 2011

Обязательно нажимайте маленькую стрелку «продолжить» после достижения точки останова (что может повторяться). Окно отладки Xcode имеет большую стрелку продолжения. Пока вы не нажмете продолжить, смоделированная ОС никогда не получит время в цикле выполнения пользовательского интерфейса для обновления своего окна.

0 голосов
/ 09 марта 2011

Пока вы останавливаете выполнение с помощью точки останова, пользовательский интерфейс не будет обновляться.Таким образом, вы не можете отлаживать таким образом.Хотя вы сможете увидеть переменные и свойства.Например, в отладчике вы можете проверить, изменилось ли свойство text метки после его установки, но пользовательский интерфейс не будет обновляться, пока вы не продолжите выполнение.

...