2013-09-02 10 views
16

Pracuję już od kilku lat tylko iOS i uważam się za dość kompetentnego z iOS i Objective C. Chciałbym dalej poszerzać swoje umiejętności i wprowadzać się w królestwo aplikacji desktopowych dla OS X.Rozwój dla OS X pochodzący z iOS w tle

Biorąc pod uwagę bardzo różne paradygmaty dla obu platform, dotyczące kontrolerów widoku i kontrolerów okien (żeby wymienić tylko kilka), staram się znaleźć przyzwoity punkt wyjścia, aby moje stopy były mokre, ponieważ moja wiedza na temat Pakiet SDK iOS powoduje zamieszanie podczas czytania dokumentacji systemu OS X.

Dla mnie najważniejsze zajęcia dla iOS byłoby UIViewController (i jego warianty, UINavigationController i UISplitViewController) i UIView. Zapoznanie się z nimi sprawia, że ​​uczenie się ich podklas (takich jak UIButton, UITextField) jest łatwiejsze do zrozumienia, a także robi coś na ekranie, aby zapewnić widoczne rezultaty.

Obecnie rozumiem, że NSViewController niekoniecznie jest tym samym odpowiednikiem UIViewController. Ponadto, biorąc pod uwagę, że aplikacje OS X mogą mieć wiele okien, UIWindowController jest całkowicie obce dla mnie i nie rozumiem, jak to by było w hierarchii aplikacji.

Czy doświadczeni weterani OS X byliby na tyle uprzejmi, by zaproponować, które zajęcia będą dla mnie najbardziej przydatnym punktem wyjścia do przeczytania i zabawy? Co byłoby pomocne dla mnie w tym momencie jest znalezienie który obszar SDK mam się skupiać swoje wysiłki na w pełni dostrzec różnice między iOS i OS X.

Edit:

nie jestem z prośbą o listę tutoriali. Wolałbym, aby ktoś wyjaśnił różnicę między paradygmatami dla wielu hierarchii kontrolerów widoku (iOS) do konfiguracji pojedynczego okna OS X i/lub zalecił, które klasy byłyby najlepiej zbadane jako punkt wyjścia do uzyskania czegoś na ekranie, takiego jak jako NSWindow i NSWindowController.

+0

Myślę, że to jest ciekawe pytanie i chciałbym mieć dobrą odpowiedź samemu, ale uważam też, że jest dość szeroki (tak trudno dać jednoznaczną odpowiedź) i pytania z prośbą o tutoriale lub inne takie zasoby są zwykle uważane za "nie na temat" (przepraszam). –

+0

Mój pytanie nie pyta o samouczki. Jest dość łatwo google na takie rzeczy. Najlepiej byłoby, gdyby pchnął we właściwym kierunku, aby dostrzec różnice między odpowiednikami iOS i OS X, takimi jak 'NSViewController' i' UIViewController' byłby bardziej pomocny, tak jak odpowiedź @ JustSid. – CaptainRedmuff

Odpowiedz

9

OS X jest bardzo podobny do iOS pod tym względem, że jest zgodny z koncepcją MVC. Jednak całe doświadczenie użytkownika jest inne, ponieważ system OS X zwykle działa z większym wyświetlaczem i używa myszy i klawiatury do wprowadzania danych, więc mapowanie 1: 1 między np. NSViewController i UIViewController nie jest możliwe. Zwykle masz kontroler okienny, który działa tak, jakbyś oczekiwał, że twój kontroler widoku jest pod iOS. Jednak zamiast przejść między kontrolerami widoku, używając np. a UINavigationController, możesz pokazać drugie okno jako arkusz modalny lub po prostu otworzyć go jako panel lub podobny.

Wystarczy spojrzeć na średnią aplikację Mac, większość rzeczy, które pod iOS wymagają wielu kontrolerów widoku i przejść między nimi, działają z jednym tylko oknem, które zawiera wszystko. Zobacz kontrolerów pod OS X są znacznie mniej przydatne niż w systemie iOS, jednak działają świetnie, aby zachować różne logiki podzielone na wiele klas, lub gdy chcesz wyświetlać różne treści w oknie i zmieniać między nimi (myśleć o Xcode, po lewej i prawy panel są zawsze takie same, ale zmienia się zawartość w środku, edytor tekstu, edytor docelowy itp. To byłoby miejsce do korzystania z wielu kontrolerów widoku).

Moja rada to nie próbować iOS'fy aplikacji Mac. Chociaż można utrzymać logikę podstawową taką samą, prezentacja aplikacji powinna być zasadniczo różna ze względu na fakt, że całe doświadczenie użytkownika w systemie OS X znacznie się różni.Jeśli nie wiesz, jak pracować z takimi obiektami jak NSWindowController, NSDocument, i wszystko, dokumentacja i przykładowy kod dostarczone przez Apple są w większości przypadków bardzo dobre (choć niektóre przykłady są starsze)

+0

Dziękuję za odpowiedź. Nie chciałbym korzystać z aplikacji iOS-owej. Wydaje mi się, że aplikacja na iOS składa się wyłącznie z 'UIViewController'', chociaż tak naprawdę nie jest wymagana dla aplikacji OS X. W oparciu o twoją odpowiedź prawdopodobnie "NSWindow" i "NSWindowController" byłyby dla mnie najważniejszymi częściami, które musiałem najpierw przemyśleć. – CaptainRedmuff

+1

@CaptainRedmuff Yep, 'NSWindowController' jest trochę jak odpowiednik' UIViewController'. Tak jak powiedziałeś, w iOS aplikacja zwykle jest zawarta w kontrolerach widoku, podczas gdy w OS X jest to jeden lub więcej kontrolerów okien. – JustSid