Jestem za różnorodnością językową, ale Objective C jest szalony. Jestem więc ciekawy: czy możliwe jest kodowanie aplikacji na iPhone'a w C ++ podczas korzystania z Cocoa API itp.?
Jestem za różnorodnością językową, ale Objective C jest szalony. Jestem więc ciekawy: czy możliwe jest kodowanie aplikacji na iPhone'a w C ++ podczas korzystania z Cocoa API itp.?
Odpowiedzi:
Krótka odpowiedź, tak, w pewnym sensie. Możesz użyć Objective-C ++, o którym możesz przeczytać w Apple Developer Connection.
Jeśli znasz już C ++, nauka Objective-C byłaby całkiem prosta, gdybyś zdecydował się spróbować. Więcej informacji na ten temat znajdziesz również w ADC.
Chociaż Objective-C rzeczywiście wydaje się początkowo „szalony”, zachęcam do trzymania się go. Gdy masz chwilę „a-ha”, nagle wszystko zaczyna nabierać sensu. Dla mnie zajęło około 2 tygodni skoncentrowanej koncentracji na celu C, aby naprawdę zrozumieć ramy Cocoa, język i to, jak to wszystko do siebie pasuje. Ale kiedy naprawdę to „zrozumiałem”, było to bardzo ekscytujące.
Brzmi banalnie, ale to prawda. Wystaw to.
Oczywiście, jeśli przenosisz biblioteki C ++ lub istniejący kod C ++, możesz użyć tych modułów z Objective-C / Objective-C ++.
Używam Objective-C, aby połączyć interfejs użytkownika.
Ale twarde wnętrzności kodu są nadal napisane w C ++.
To jest główny cel interfejsu Objective-C interfejsu użytkownika i obsługi zdarzeń.
I świetnie sprawdza się w tym celu.
Nadal lubię C ++ jako zaplecze dla kodu (ale to głównie dlatego, że lubię C ++), możesz dość łatwo użyć Objective-C również do zaplecza aplikacji.
#include <XXX>
podobnie jak plików C / C ++.
Po pierwsze, stwierdzenie, że Objective-C jest „szalone”, jest zabawne - mam obok siebie książkę Bjarne Stroustrup C ++, która liczy 1020 stron. Plik PDF firmy Apple dotyczący Objective-C to 141.
Jeśli chcesz używać UIKit, będzie ci bardzo, bardzo trudno cokolwiek zrobić w C ++. Każda poważna aplikacja na iPhone'a, która jest zgodna z interfejsem użytkownika Apple, będzie wymagać, aby jej części interfejsu były napisane w Objective-C. Tylko jeśli piszesz grę OpenGL, możesz prawie całkowicie trzymać się C / C ++.
Mając pewne doświadczenie w tym zakresie, rzeczywiście możesz użyć kodu C ++ jako swojego „podstawowego” kodu, ale musisz użyć obiektywnego C do wszystkiego, co dotyczy iPhone'a.
Nie próbuj zmuszać Objective-C do działania jak C ++. Na początku wydaje ci się, że jest to możliwe, ale wynikowy kod naprawdę nie będzie działał dobrze z Cocoa i będziesz bardzo zdezorientowany, co się dzieje. Poświęć trochę czasu, aby nauczyć się poprawnie, bez żadnego C ++, tworzenia GUI i aplikacji na iPhone'a, a następnie połącz swoją bazę C ++.
Musisz użyć Objective C, aby połączyć się z API Cocoa, więc nie ma wyboru. Oczywiście za kulisami możesz używać tyle C ++, ile chcesz (Objective C ++ ułatwia to).
Jest to rzeczywiście szalony język, ale jest też ... zabawny w użyciu, gdy już się do niego przyzwyczaisz. :-)
Nie jestem pewien co do C ++, ale zdecydowanie możesz kodować aplikacje na iPhone'a w C #, używając produktu o nazwie MonoTouch .
Możesz zobaczyć ten post, aby zapoznać się ze szczegółową dyskusją na temat MonoTouch Vs Obj-C: Jak zdecydować między MonoTouch a Objective-C?
Jestem w trakcie przenoszenia intensywnej obliczeniowo aplikacji na Androida napisanej w Javie na iOS6. Robię to, przenosząc części spoza UI z Java do C ++, pisząc (minimalne) części UI w Obj-C i pakując te pierwsze w (mały) interfejs C przy użyciu standardowej techniki C / C ++, tak że można uzyskać do niego dostęp z Obj-C, który jest w końcu nadzbiorem C.
Jak dotąd jest to skuteczne i nie napotkałem żadnych problemów. Wydaje się, że jest to uzasadnione podejście, ponieważ Xcode umożliwia tworzenie klas C ++, a także klas Obj-C, a niektóre z oficjalnego przykładowego kodu robią to w ten sposób. Aby to zrobić, nie musiałem wychodzić poza żadne oficjalnie obsługiwane interfejsy.
Wydaje się, że nie byłoby wiele do zyskania na pisaniu mojego pozostałego kodu interfejsu użytkownika w C ++, nawet gdyby było to możliwe, biorąc pod uwagę pomoc udzieloną przez konstruktora interfejsu w Xcode, więc moja odpowiedź byłaby taka, że możesz użyć C ++ do prawie cała aplikacja lub tyle, ile uważasz za odpowiednie / wygodne.
Tak, ale myślenie, że można zaprogramować każdy rodzaj programu w jednym języku, jest błędnym pomysłem, chyba że piszesz bardzo proste programy. Cel C jest dla Cocoa, tak jak C # dla .NET, Użyj odpowiedniego narzędzia do właściwej pracy, Próba interakcji C ++ z Cocoa poprzez pisanie kodu pomostowego i próba dostosowania kodu C ++ do wymagań Cocoa nie jest dobrym pomysłem ani oczekiwanie C ++ wydajność z Celu C wynosi. Powinieneś spróbować zaprojektować układ i architekturę aplikacji, mając na uwadze istniejące umiejętności i określić, która część powinna zostać napisana w jakim języku, a następnie odpowiednio ją zbuduj.
Obecnie piszę framework Objective-C ++ o nazwie Objective-X, który umożliwia programowanie iPHONE w PURE C ++. Możesz zrobić tak:
#import "ObjectiveX.h"
void GUIApplicationMain() {
GUIAlert Alert;
GUILabel Label;
GUIScreen MainScreen;
Alert.set_text(@"Just a lovely alert box!");
Alert.set_title(@"Hello!");
Alert.set_button(@"Okay");
Alert.show();
Label.set_text(@"Ciao!");
Label.set_position(100, 200, 120, 40);
MainScreen.init();
MainScreen.addGUIControl(Label.init());
}
i skompiluj go używając odpowiednich opcji wiersza poleceń GCC. Już skompilowałem tę aplikację helloworld i w0rkX0rz działa jak urok. ;-) Wkrótce będzie dostępny w GoogleCode. Wyszukaj Objective-X lub odwiedź http://infotronix.orgfree.com/objectivex ok. tydzień później!
Zaktualizowany (ale pozornie nieaktywny) adres URL: http://code.google.com/p/objectivex/
Może to być trochę offtopic, ale i tak. Możesz programować C ++ bezpośrednio na urządzeniach iOS. Sprawdź aplikację CppCode na iOS - http://cppcode.info . Uważam, że później pomaga nauczyć się c i c ++ oraz obiektywne-c.