2008-11-10 16 views
10

Zaczynam projekt, który, jak sądzę, będzie korzystał z powiązań (mam tabelę list źródłowych, kilka widoków przeglądarki itp.), Ale myślę, że byłoby to również całkiem wykonalne, i być może bardziej zrozumiałe, bez nich. Z mojego ograniczonego doświadczenia wynika, że ​​wiązanie jest trudne do rozwiązania i bardzo "magiczne" (np. Trudno jest wstawić rejestrowanie w dowolnym miejscu, aby dowiedzieć się, gdzie coś jest zepsute, wszystko działa albo nie działa).Czy mogę używać wiązań Cocoa do mojego najnowszego projektu?

Czy mówię tylko o tym, że mam niedoświadczenie (w takim przypadku mógłbym usiąść i poświęcić trochę czasu na pracę nad zrozumieniem wiązań i oczekiwać, że rzeczy staną się coraz jaśniejsze/łatwiejsze) lub lepiej byłoby napisać cały klej koduję się w sposób, który jestem pewien, że mogę zrozumieć i rozwiązać.

Odpowiedz

21

Użyj powiązań.

Pamiętaj, że musisz musi podążać za wzorcem MVC, aby jak najlepiej wykorzystać wiązania. Jest to łatwiejsze niż się wydaje, jak kakao robi prawie wszystko dla ciebie w dzisiejszych czasach:

  1. Widok: NSView i podklasy (oczywiście), NSCell i podklasy, NSWindow i podklas
  2. Kontroler: NSController i podklasy (zwłaszcza NSArrayController)
  3. model: Rdzeń danych

Jeśli nie zamierzamy korzystać z danych Core, a następnie dostać się do ro Będą to twoje własne obiekty modelu, ale to jest łatwe. Większość metod tych obiektów będzie prostymi akcesoriami, które możesz tylko @synthesize, jeśli kierujesz na Leoparda.

Zwykle nie można uciec, nie pisząc żadnego kodu, ale Wiązania umożliwiają pisanie bardzo mało kodu.

Zalecane lektury:

+0

Dodatkowo wiązania, po ich zrozumieniu, są łatwe i mogą być naprawdę potężne, dla mnie nie ma powodu, aby ich nie używać. –

8

Wiązania mogą wydawać się magiczne. Aby zrozumieć magię powiązań, uważam, że należy dokładnie zrozumieć KVC/KVO. Naprawdę mam na myśli dokładnie.

Jednak w moim przypadku (nowy w Obj-C - 9 miesięcy), kiedy dostałem więzy KVC/KVO, był to dreszczyk emocji. Znacznie zmniejszyło to mój kod kleju i znacznie ułatwiło mi życie. Debugowanie powiązań stało się sprawą upewnienia się, że moje zmiany wartości klucz-wartość były obserwowalne. Uważam, że jestem w stanie poświęcić więcej czasu na pisanie, co ma robić moja aplikacja, niż upewnianie się, że widok odzwierciedla dane.

Zgadzam się jednak, że wiązania na początku są bardzo zastraszające.

5

My ogólnego podejścia jest zacząć jak najwięcej le za pomocą wiązań i zobacz, jak się sprawy mają.Jeśli jednak dany element interfejsu staje się problematyczny przy użyciu wiązań lub więcej wysiłku, niż jest to warte, to nie waham się cofać do korzystania z bardziej tradycyjnych metod (np. Źródeł danych, działań), gdy ma to sens. Zauważyłem, że te rzeczy mogą być dość trudne do przewidzenia z wyprzedzeniem, ale myślę, że faworyzowanie wiązań jest lepsze na dłuższą metę, o ile nie dostaniesz zbyt dogmatycznej wiedzy o trzymaniu się ich w sytuacjach, gdy nie zapewniają dowolna korzyść.

4

Po chwili pracy z Wiązaniami odkryłem, że to wcale nie jest magia, uważam, że jest to wystarczająco zaawansowana technologia. Debugowanie powiązanego interfejsu odbywa się w inny sposób niż w przypadku klejonego interfejsu, ale gdy już je zastosujesz, zalety związane z ponownym użyciem, konserwowalnością i konsystencją są znaczące dla IMO.

+1

Czy mógłbyś rozwinąć lub wskazać mi jakieś tutoriale/dokumentację na temat technik debugowania dla powiązanych interfejsów? –

+0

Jedną z najprostszych rzeczy jest to, że interfejs i model są łączone tylko za pomocą ścieżek kluczy, więc bardzo łatwo jest wyodrębnić lub pozorować części modelu, wiążąc interfejs z testowym sterownikiem, a nie z rzeczywistym modelem. –

2

Wygląda na to, że używam wiązań, KVO i metod źródła danych w równym stopniu w moich aplikacjach. To naprawdę zależy od kontekstu. Na przykład w jednym z moich projektów używam wiązań niemal wszędzie z wyjątkiem widoku głównego okna głównego, który jest na tyle złożony, że nie chciałbym nawet próbować dopasować go do kontrolera NSTreeController. Jednocześnie używam KVO do ponownego ładowania obiektów UI i śledzenia zależności w moich obiektach modelu.

Podczas uczenia się zaawansowanych tematów związanych z kakao, takich jak Wiązania lub Podstawowe dane, należy mieć na uwadze wszystkie technologie, które się za nimi kryją; wszystko od protokołów źródła danych, powiadomień KVO, i tak dalej. Gdy będziesz mieć wystarczająco dużo doświadczenia w pracy z nimi, aby wiedzieć, jak działa "magia", z łatwością zintegrujesz elementy wyższego poziomu z aplikacją.

W tym konkretnym przypadku musisz zdecydować, czy warto poświęcić dodatkowy czas, aby nauczyć się wiązań nad tworzeniem aplikacji. Jeśli to możliwe, może Ci się przydać opracowanie uproszczonego prototypu aplikacji za pomocą wiązań, dzięki czemu wiesz, jak najlepiej dopasować elementy do siebie, gdy rozpoczniesz właściwy projekt.

1

Dla ciekawskich, skończyłem używać wiązań i po kilku dniach nagle zaczęły "robić sens". Więc zdecydowanie polecam po prostu iść do przodu i poświęcić czas, aby się ich nauczyć.

Uznałem też, że porady Briana Webstera były bardzo pomocne, ponieważ w rzeczywistości wykonałem garść rzeczy w staroświecki sposób, ponieważ wiązanie nie mogło zrobić tego, co chciałem, lub ponieważ byłoby to zbyt skomplikowane czego potrzebowałem przy użyciu wiązań.

2

Moja opinia brzmi: tak, powinieneś przyjąć powiązania; Technologia jest teraz dobrze zrozumiała i stabilna, i warto robić to za ilość kodu, którego nie potrzebujesz już pisać. Kiedy po raz pierwszy przełączyłem się na wiązanie, miałem dość problemów z uzyskaniem czasu obserwacji i obserwowania obiektów, które pasują do siebie, oraz z uszkodzeniami UI, ponieważ obserwowano prawidłowy obiekt, ale niepoprawny. Gdy zobaczysz te problemy kilka razy, wiesz, jak ich unikać i jak je dostrzec, jeśli się pojawią, stanie się proste. Ish. Nadal chciałbym, aby "zdarzenie tutaj spowodowało tę aktualizację tutaj" śledzi w debugerze, ale wciąż cieszę się, że zrobiłem to.

Powiązane problemy