Xcode LLDB Print Statement Fail - NSUndoManager
У меня есть точка останова и хочу напечатать надпись UITextField. Я печатаю po myTextField.superview
, но получаю следующую ошибку:
error: instance method 'undoManager' has incompatible result types in different translation units ('id' vs. 'NSUndoManager *')
note: instance method 'undoManager' also declared here
error: 1 errors parsing expression
Что это значит и как я могу распечатать свой просмотр? Я нашел ссылку, которая обеспечивает janky обходной путь в коде: http://openradar.io/15890965, но я хотел бы получить лучшее решение.
Ответы
Ответ 1
Люди мира: у меня есть ответ!
Чтобы уклониться от всех ошибок UIKit: Прежде чем вводить инструкцию po
, введите строку - expr @import UIKit
Если вы хотите включить это приложение для своего приложения по всему миру, добавьте следующую следующую точку останова в свой делегат приложения:
![enter image description here]()
Спасибо Крейгу Хокенберри и Стиву Стрезе за обновление (найдено здесь).
Ответ 2
Решение, которое я использую для предотвращения этой ошибки при отладке, - это явно бросить все.
В вашем случае я бы сделал
po [(UITextField *)myTextField superView]
Ответ 3
Есть ли у вас какие-либо пользовательские методы доступа для 'myTextField'? Я видел эту же проблему несколько раз, и обычно ее вызывает po, пытающаяся напечатать свойство для объекта, который инициализируется при первом вызове его getter. Например, если я пытаюсь запустить 'po self.imageView.contentMode' в UITableViewCell, я получаю ту же ошибку. Попробуйте переместить точку останова в точку в коде, где вы знаете, что "myTextField" был полностью инициализирован.
Ответ 4
Действительно ли myTextField
указывает на UITextField
? Это одна из причин появления этой ошибки. Например, следующий код будет компилироваться, и если я установил точку останова на третьей строке, я могу ввести po b.superview
, чтобы воспроизвести обнаруженную ошибку.
NSString *a = @"not a view";
UITextField *b = (UITextField *)a;
UIView *view = b.superview;
Попробуйте ввести po [myTextField class]
в приглашении LLDB, чтобы увидеть, действительно ли это UITextField
. Это может быть другой тип объекта или nil
.
Ответ 5
Я получил эту ошибку в Xcode 5.1.1 и исправил ее, исключив Xcode 5.1.1 и попробовав Xcode 6. Перезагрузка Xcode 5.1.1 для Xcode 5.1.1 может также работать для некоторых людей.