IPhone SDK - получение событий из вложенного представления - PullRequest
0 голосов
/ 31 марта 2011


Я внедряю карточную игру.
В этой игре у меня есть доска, которая является UIView, и он держит карты, которые также являются объектами UIView, которые содержат изображения и т.д ...
У меня вопрос, как лучше всего получать события в UIViewController из внутренних представлений карт?
Должен ли я использовать NSNotificationCenter и зарегистрироваться для общего события "cardSelected"?
или я должен каким-то образом использовать делегатов и заставить UIViewController прослушивать делегата с доски (а доска слушает делегата с карт и т. д.) ...

Спасибо, Нетанел

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Я бы сказал, что использование NSNotificationCenter является более чистым решением просто потому, что вам не нужно постоянно передавать делегата через все классы.Это просто личное предпочтение, любой подход будет работать нормально.

0 голосов
/ 31 марта 2011

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

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

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