2008-11-10 2 views
10

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

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

ответ

21

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

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

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

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

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

Рекомендуемая литература:

+0

Кроме того, привязки, после их понимания, являются легкими и могут быть действительно мощными, для меня нет причин не использовать их. – 2009-01-15 17:29:28

8

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

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

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

5

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

4

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

+1

Не могли бы вы уточнить или указать на любые учебники/документацию по методам отладки для связанных интерфейсов? – 2008-11-10 20:05:02

2

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

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

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

1

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

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

2

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

 Смежные вопросы

  • Нет связанных вопросов^_^