Какао - Предлагаемые методы для отладки проблем связывания между XCode и Интерфейсным Разработчиком - PullRequest
10 голосов
/ 16 марта 2009

Я новичок в Какао, и я пробираюсь через примеры из книги Хиллегасса «Программирование какао для Mac OS-X». Было несколько случаев, когда пример приложения, с которым я работал, запускался, и я получал сообщение, такое как:

2009-03-11 00: 39: 19.167 CarLot [7517: 10b] Невозможно создать NSData из объекта <_NSControllerObjectProxy: 0x188bf0> класса _NSControllerObjectProxy

Единственный способ, с помощью которого я нашел решение такой проблемы, - это тщательно пройти через все привязки и атрибуты в конструкторе интерфейса, чтобы увидеть, где я пропустил какую-то конфигурацию - что все занимает время!

Есть ли более эффективный способ определить, в чем проблема, из сообщения об ошибке? Существуют ли какие-либо методы отладки, которые вы можете использовать для поиска подобных проблем?

Ответы [ 5 ]

11 голосов
/ 23 января 2010

На сайте разработчиков Apple есть замечательная статья об устранении проблем с привязками.

http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CocoaBindings/Concepts/Troubleshooting.html

Ключ на вынос? Существует параметр NSBindingDebugLogLevel, который можно использовать для получения отладочной информации.

Два способа установить его:

1 - постоянно по умолчанию

по умолчанию написать com.yourdomain.yourapplication NSBindingDebugLogLevel 1

2 - передать его в качестве параметра при отладке

путь / к / вашему / приложению -NSBindingDebugLogLevel 1

3 голосов
/ 17 марта 2009

Эта статья очень кратко об этом говорит.

По сути, в нем говорится, что вы можете просмотреть файлы Xib, чтобы немного быстрее выяснить, какие привязки вы установили в своем приложении.

Надеюсь, это поможет!

1 голос
/ 16 марта 2009

Я не уверен, что есть способ получить сводку привязок и атрибутов, которые вы установили, кроме как в самом Интерфейсном Разработчике. Насколько я знаю, это единственный графический интерфейс, который показывает эту информацию. Вы можете попробовать запустить приложение в отладчике и разбить исключения (- [NSException повышение]), чтобы посмотреть, сможете ли вы хотя бы отследить, какой объект вызывает у вас эту ошибку, что может помочь вам обнаружить плохое соединение в IB.

Если ваше приложение достаточно маленькое и быстро собирается, и вы только начинаете использовать IB и привязки, я бы посоветовал вам установить одно соединение и проверить его, чтобы увидеть, работает ли оно, а затем перейти к следующему. Таким образом, вы будете знать, какое соединение или атрибут вызывает проблемы.

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

0 голосов
/ 06 апреля 2009

Одна вещь, которую я сначала не заметил, это то, что если вы посмотрите на инспектор соединений для объекта, он показывает хороший список всего, с чем он связан, и если вы наводите курсор на элемент, он выделяет соответствующий элемент .

Это хорошо, когда вы снова что-то привязали к столбцу таблицы.

0 голосов
/ 17 марта 2009

Что делать, если вы делаете привязки программно, а не в интерфейсном конструкторе?

Для этого вы должны использовать этот метод NSObject:

- (void)bind:(NSString *)binding toObject:(id)observableController withKeyPath:(NSString *)keyPath options:(NSDictionary *)options

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...