Должен ли я использовать привязки Какао для моего последнего проекта? - PullRequest
10 голосов
/ 10 ноября 2008

Я запускаю проект, который, я думаю, выиграет от привязок (у меня есть таблица с исходным списком, несколько просмотров браузера и т. Д.), Но я думаю, что это было бы вполне выполнимо и, возможно, более понятно, без них , Исходя из своего ограниченного опыта, я обнаружил, что привязки трудно устранять и они очень «магические» (например, трудно вставить запись в журнал где-нибудь, чтобы выяснить, где что-то ломается, все или работает, или нет).

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

Ответы [ 7 ]

21 голосов
/ 10 ноября 2008

Использовать привязки.

Обратите внимание, что вы должны следовать схеме MVC, чтобы получить максимальную отдачу от привязок. Это проще, чем кажется , так как в настоящее время Какао делает почти все для вас:

  1. Представление: NSView и подклассы (конечно), NSCell и подклассы, NSWindow и подклассы
  2. Контроллер: NSController и подклассы (особенно NSArrayController)
  3. Модель: базовые данные

Если вы не собираетесь использовать Базовые Данные, тогда вы можете свернуть свои собственные объекты модели, но это легко. Большинство методов этих объектов будут простыми средствами доступа, которые вы можете просто @synthesize, если вы нацелены на Leopard.

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

Рекомендуемое чтение:

8 голосов
/ 10 ноября 2008

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

Тем не менее, в моем случае (впервые для Obj-C - 9 месяцев), когда я получил привязки KVC / KVO, это было волнение. Это значительно сократило мой клейкий код и значительно облегчило мою жизнь. Отладка привязок стала примером того, что мои изменения значения ключа были заметны. Я обнаружил, что могу потратить больше времени на написание того, что должно делать мое приложение, а не на то, чтобы представление отображало данные.

Я согласен с тем, что привязки сначала очень пугают.

5 голосов
/ 10 ноября 2008

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

4 голосов
/ 10 ноября 2008

Через некоторое время работы с Bindings я обнаружил, что это совсем не волшебство, подумал, что это достаточно продвинутая технология. Для отладки связанного интерфейса требуются другие методы, чем для склеенного интерфейса, но если у вас есть эти методы, преимущества с точки зрения повторного использования, ремонтопригодности и согласованности являются важными для IMO.

2 голосов
/ 15 января 2009

Мое мнение таково, что да, вы должны принять привязки; технология хорошо понятна и стабильна, и ее стоит делать для того объема кода, который вам больше не нужно писать. Когда я впервые переключился на привязки, у меня возникли некоторые проблемы с согласованием времени жизни наблюдаемых и наблюдаемых объектов, а также с поломками пользовательского интерфейса, поскольку он наблюдал действительный объект, но неправильный. После того, как вы видели эти проблемы пару раз, знание того, как их избежать и как их обнаружить, если они появляются, становится простым. Иш. Я все еще желаю, чтобы "это событие здесь вызвало это обновление здесь", следы в отладчике, но я все еще рад, что сделал ход.

2 голосов
/ 17 ноября 2008

Кажется, что я использую привязки, методы KVO и источника данных примерно одинаково в моих приложениях. Это действительно зависит от контекста. Например, в одном из моих проектов я использую привязки практически везде, кроме схематичного вида главного окна, который достаточно сложен, и я бы не хотел даже пытаться встроить его в NSTreeController. В то же время я также использую KVO для перезагрузки объектов пользовательского интерфейса и отслеживания зависимостей в объектах моей модели.

При изучении таких сложных тем, как «Привязка» или «Основные данные», важно помнить, что вы должны понимать все технологии, лежащие в их основе; все из протоколов источника данных, уведомлений KVO и так далее. Когда у вас будет достаточно опыта работы с ними, чтобы понять, как работает «магия», вы сможете с легкостью интегрировать высокоуровневые вещи в свое приложение.

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

1 голос
/ 15 января 2009

Для любопытных я использовал привязки, и через пару дней они вдруг просто начали «обретать смысл». Поэтому я бы определенно рекомендовал просто идти вперед и уделять время их изучению.

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

...