Подтвердить что ты не робот

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, но я хотел бы получить лучшее решение.

4b9b3361

Ответ 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 может также работать для некоторых людей.