Почему я должен реализовывать все методы обработки событий при обработке событий в подклассе UIView? - PullRequest
0 голосов
/ 12 апреля 2010

В соответствии с Руководством по программированию приложений iPhone (глава «Обработка событий») я должен реализовать все методы обработки событий (даже если это нулевая реализация), если я работаю с UIView или UIViewController. И я не должен называть реализацию этих методов суперклассом.

Почему? (Я искал в Руководстве и в Google, но не могу найти ответ ... или просто не могу сделать хороший поиск)

Ответы [ 2 ]

2 голосов
/ 12 апреля 2010

Из справочника :

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

0 голосов
/ 12 апреля 2010

есть много вещей в представлении, которое определяется во время выполнения пользователем ... его методом делегата ... и если оно не определено, есть вероятность, что ваше приложение потерпит крах ...

Например, если у вас есть одно приложение, и вы используете в нем UITableView, и если вы не реализуете

tableView:cellForRowAtIndexPath:

Это не даст вам никакой ошибки ... но при запуске приложения и при просмотре, содержащем загрузку Tableview, приложение вылетает и вы получите

* Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «UITableView dataSource должен вернуть ячейку из tableView: cellForRowAtIndexPath: '

Потому что приложение не знает, как показать ячейку таблицы ...

Так было бы в том же случае с UIView и UIViewController ... Если конкретный метод делегата не реализован, ваше приложение может произойти сбой при определенном событии (может быть не ...)

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