

z C++ na Objective-C i Cocoa
#1
Napisano 09 maja 2011 - 16:26

#2
Napisano 10 maja 2011 - 11:26
Czy trudno będzie przejść z C++ na Obj-C?
Z pewnością bardziej przydatna jest znajomość semantyki języka C niż C++ - ten z kolei nie pomaga w opanowywaniu składni i nazewnictwa Objective-C. Natomiast C++ daje Ci znajomość mechanizmów obiektowych. Gdybyś znał Smaltalka przejście na Objective-C było by szybkie i bezbolesne.
Musisz doprecyzować pytanie - chodzi ci o IDE, wrappera czy co?Jest jakieś API dla C++ pod windows, czy pod MAC też jest? Jeżeli tak skąd je wziąć?
Jeśli aplikacje będą konsolowe to w zasadzie nie ma żadnych problemów - ewentualna kwestia dopisania paru #IFDEFów dla preprocesora. Jeżeli chciałbyś pisać coś okienkowego to przede wszystkim QT, wxWidgets (możliwości jest oczywiście więcej).Jak pisać aplikacje pod windows w c++ na macu? (tu można link - odp alternatywnie bo raczej sobie sam poradze) ; )
Tak jak w aplikacjach konsolowych należy uważać przy pewnych zagwozdkach - np. w QT opisuje to dokument:
Qt 4.7: Qt for Mac OS X - Specific Issues
Jest to obiektowy interfejs programistyczny pomagający tworzyć "całościowe" aplikacje. Dostarcza on nam wielu gotowych klas, metod (zaczynających się od NS...) - są to np. elementy interfejsu Aqua - okienka, guziki, monity, ale także obsługa zdarzeń, wątków czy konkretne kontenery itp. Spróbuję taki schemat:Co to jest te całe Cocoa? (czytałem po ang. i dowiedziałem się mało)
Jądro Darwin <-> OpenGL <-> Cocoa <-> Aqua
Można przy czym wiąże się to z komplikacjami. Na takim poziomie zaawansowania nie ma sensu bawić się w pisanie handlera widoku/wrappera. Tutaj jest przykład takiej nikomu niepotrzebnej zabawy:Czy można tworzyć graficzny interfejs do progamów napisanych w C++ w Interface Builder? Jeżeli nie to do czego on w takim razie służy?
Loading
Być może można też coś pokombinować z apple script.
Językiem programowania jest Objective-C a frameworkiem Cocoa Touch (w odróżnieniu od Cocoa zwykłego na MacOS X).Aplikacje na iPhona i iPada pisze się w Obj-C czy Coca Framework? Czym się to różni?
jQuery to po prostu biblioteka JS uproszczająca nam zadanie. Cocoa to API, wraz z Objective-C pozwala nam tworzyć aplikacje niejako wymuszając wzorzec Model-View-Controller. Rozumiem, że przez znaczniki rozumiesz "dodatkowe funkcje". Jeśli tak to Cocoa daje Ci między innymi:Czy aby uczyć się Coca to jest "osobny język jak jQuery dla JS czy tylko jakieś rozwinięcie dodające nowe znaczniki dla Obj-C?"
- Możliwość rysowania okienek, kontrolek
- obsługę grafiki, audio, video
- obsługę baz danych
- usługi internetowe
- dostęp do języków skryptowych
#3
Napisano 10 maja 2011 - 12:02
#4
Napisano 10 maja 2011 - 14:39
Czyli w samym Obj.-C nie można okienkowych tworzyć? Rozumiem w takim razie ze Interface builder do Cocoa służy tak?- Możliwość rysowania okienek, kontrolek
- obsługę grafiki, audio, video
- obsługę baz danych
- usługi internetowe
- dostęp do języków skryptowych
#5
Napisano 10 maja 2011 - 15:28


#6
Napisano 10 maja 2011 - 20:30
#7
Napisano 11 maja 2011 - 09:23
#8
Napisano 11 maja 2011 - 09:56
#9
Napisano 11 maja 2011 - 10:49
#10
Napisano 11 maja 2011 - 12:53
#11
Napisano 11 maja 2011 - 13:33
#12
Napisano 11 maja 2011 - 14:44

#13
Napisano 11 maja 2011 - 14:45
#14
Napisano 11 maja 2011 - 17:05
#15
Napisano 11 maja 2011 - 17:41

#16
Napisano 11 maja 2011 - 23:38
Obj-C na podstawowym poziomie nie różni się zbytnio od C++. Składnia jest trochę inna, ale w gruncie rzeczy mają wiele cech wspólnych Objective-C - Wikipedia, the free encyclopedia
Jednak, aby skutecznie programować w tym języku trzeba poznać jego filozofię, a jest ona trochę inna niż w C++. Główną różnicą z praktycznego punktu widzenia jest zarządzenie pamięcią. O ile C++ wymaga alokacji i zwalniania pamięci, to w obj-C obiekty mogą mieć pamięć przydzieloną tymczasowo tj. mogą zostać usunięte zaraz po tym jak metoda skończy się wykonywać (choć mogą istnieć jeszcze przez bliżej nieokreślony czas), możemy je również zatrzymać "retain" i to wielokrotnie np. kilka obiektów retainuje jedną instancję innego obiektu, który zostanie usunięty dopiero, gdy odpowiednią ilość razy wywołamy na nim "release"(raz za dużo = crash). Takie podejście jest bardzo wygodne, ale sprzyja błędom i jeśli ktoś nie do końca rozumie jak to działa raczej nie napisze stabilnej i pozbawionej wycieków pamięci aplikacji.
Kolejną kwestią jest Cocoa. Zasada jest taka, że z klas jakie oferuje korzysta się w ostateczności, bo choć wygodne, to są wolne. Przykładowo NSArray jest dobre, żeby trzymać w niej kilka obiektów, do których odwołujemy się co kilka sekund. Jeśli zaś potrzebujemy tablicę o wymiarach kilkatysięcy i to wywoływaną z każdą klatką tj. 60 razy na sekundę, to o wiele szybciej jest korzystać nawet ze zwykłej tablicy z C.
Oczywiście zawsze można pisać w obj-C++, czyli łączyć obj-C z C++, ale ja nie jestem zwolennikiem tego rozwiązania. Co prawda korzystam z tego od czasu do czasu np. korzystając z Box2D, ale jeśli nie ma takiej potrzeby, to nie warto zaśmiecać kodu.
#17
Napisano 12 maja 2011 - 01:50

#18
Napisano 12 maja 2011 - 07:20
Jednak, aby skutecznie programować w tym języku trzeba poznać jego filozofię, a jest ona trochę inna niż w C++. Główną różnicą z praktycznego punktu widzenia jest zarządzenie pamięcią. O ile C++ wymaga alokacji i zwalniania pamięci, to w obj-C obiekty mogą mieć pamięć przydzieloną tymczasowo tj. mogą zostać usunięte zaraz po tym jak metoda skończy się wykonywać (choć mogą istnieć jeszcze przez bliżej nieokreślony czas), możemy je również zatrzymać "retain" i to wielokrotnie np. kilka obiektów retainuje jedną instancję innego obiektu, który zostanie usunięty dopiero, gdy odpowiednią ilość razy wywołamy na nim "release"(raz za dużo = crash). Takie podejście jest bardzo wygodne, ale sprzyja błędom i jeśli ktoś nie do końca rozumie jak to działa raczej nie napisze stabilnej i pozbawionej wycieków pamięci aplikacji.
To jeszcze ciekawe pytanie ode mnie - jest gdzis lopatologicznie to wszystko wyjasnione?
#19
Napisano 12 maja 2011 - 07:37
#20
Napisano 12 maja 2011 - 08:21

#21
Napisano 13 maja 2011 - 05:08
#22
Napisano 13 maja 2011 - 10:12
Jest jakieś API dla C++ pod windows, czy pod MAC też jest? Jeżeli tak skąd je wziąć?
O to mi własnie w powyzszym pytaniu chodziło - bo doczytałem.
#23
Napisano 13 maja 2011 - 10:14
#24
Napisano 13 maja 2011 - 10:16
#25
Napisano 13 maja 2011 - 14:10

Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych