как найти ошибку, если вызов делегата не принимается в target-c - PullRequest
0 голосов
/ 24 февраля 2011

Просто внедряю моего первого делегата в цель-C.Я думал, что у меня все на месте, однако вызов из моего AddController обратно в ListController не принимается в ListController.

Учитывая, что я не получаю исключения, и что я вижу, что коддоходит до точки в AddController, где он вызывает делегата, есть ли какие-либо советы по поиску неисправностей?

Так, например:

  • при вызове «делегата» (см. Ниже) не сгенерировано исключение. Могу ли я считать, что мои объявления делегата в том же файле в порядке?

    "[делегировать newItemController: self didFinishWithSave: YES];"

  • с учетом, так сказать, родительского контроллера, делегат указан в определении * .h (см. ниже), то это подразумевает, что я правильно реализовал метод в файле * .m, отмечая, что я не получаю ошибок сборки?

    @ interface RootViewController: UITableViewController {

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

спасибо

Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

Самая распространенная ошибка, которую я видел, когда метод делегата не вызывается, это свойство делегата nil. Другими словами, забыли указать, кто является делегатом?

Что касается советов по отладке, каждый раз, когда я вижу проблему, когда делегат не вызывается, это установить точки останова во всем коде и пройти по коду. Тогда вы сможете увидеть, куда идут дела и что называется или нет.

Кроме того, вы часто упоминаете исключения. Цель C предпочитает не использовать исключения, поскольку они являются относительно дорогим вызовом в языке (в отличие от, скажем, Java). Objective C может и использует исключения, но они редки. Возможно, вы захотите подкрепить свое понимание обработки ошибок в цели c.

1 голос
/ 24 февраля 2011

Вы установили переменную-делегат в AddController следующим образом:

self.delegate = <instance of ListViewController> 

Если она не установлена, то делегат будет равен нулю, а вызов метода для нуля ничего не даст.В противном случае, делегатские звонки на самом деле не пропали бы так.

Хотя я не понял вашего второго пункта.

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