Должен ли я использовать привязки Cocoa для моего последнего проекта?

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

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

Ответ 1

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

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

  • Вид: NSView и подклассы (конечно), NSCell и подклассы, NSWindow и подклассы
  • Контроллер: NSController и подклассы (особенно NSArrayController)
  • Модель: Основные данные

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

Вы обычно не можете уйти от написания кода, но Bindings может позволить вам писать очень маленький код.

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Важно помнить, что при изучении расширенных тем Cocoa, таких как Bindings или Core Data, вы должны понимать все технологии, стоящие за ними; все из протоколов источника данных, уведомлений KVO и т.д. Как только у вас будет достаточно опыта работы с ними, чтобы узнать, как работает "волшебство", вы сможете легко интегрировать материал более высокого уровня в ваше приложение.

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

Ответ 6

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

Ответ 7

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

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