2012-09-20 6 views
15

To pytanie pojawia się często tutaj, nawet jeśli niejawnie, gdy użytkownicy mylą swoje pytania na iOS. Jaka jest różnica między Xcode, Objective-C i Cocoa?Jaka jest różnica między Xcode, Objective-C i Cocoa?

+31

Jest to różnica pomiędzy piórem, angielskim i biblioteki publicznej. –

+2

@Catfish_Man To był naprawdę bardzo pomocny człowiek, nie ... specjalnie dla każdego, kto zaczyna nurkować w rozwoju iOS – Leo

Odpowiedz

32

Objective-C to język programowania. Można powiedzieć, że to tylko opis, jak wyglądają prawidłowe programy Cel-C i co mają na myśli. Jeśli masz listę kodów źródłowych napisaną w Objective-C, potrzebujesz interpretera lub kompilatora, aby umieścić aukcję. Języki takie jak Objective-C są zwykle kompilowane, więc większość ludzi używa kompilatora (np. LLVM). Objective-C jest prawie wyłącznie używany do programowania na iOS i OS X, ale są też inne zastosowania - na przykład niektórzy ludzie piszą Objective-C dla systemu Linux.

Możesz użyć edytora tekstu, aby zapisać źródła i kompilator, aby zamienić je w rzeczywiste programy, ale dzięki nowoczesnym technologiom jest o wiele więcej do zaopiekowania, dzięki czemu istnieje inny program ułatwiający pracę. Nazywane są one Zintegrowanymi Środowiskami Rozwoju lub IDE. IDE oferuje wygodny sposób edycji źródeł, ich kompilacji, debugowania powstałych programów, czytania dokumentacji i wielu innych rzeczy. Xcode jest jednym z takich IDE. Ważną obserwacją jest to, że Xcode nie kompiluje twoich źródeł, po prostu wywołuje autonomiczny kompilator (LLVM). Xcode nie jest jedynym IDE, którego można użyć do tworzenia aplikacji Objective-C - na przykład jest AppCode.

Pisanie aplikacji na system iOS lub OS X od nowa za każdym razem będzie bardzo czasochłonne. Właśnie dlatego Apple zapewnia programistom dobry zestaw bibliotek. Biblioteki są po prostu ogromną ilością kodu źródłowego napisanego przez Apple, a ten kod źródłowy dba o większość wspólnych aplikacji. Te biblioteki nazywają się Cocoa.

Teraz, jeśli nie możesz wymyślić, jak rozszerzyć klasę, najprawdopodobniej mówisz o Objective-C. Nie ma to nic wspólnego z Xcode ani Cocoa, można bardzo dobrze napisać kod GNUstep dla systemu Linux, używając Vima jako IDE i GCC jako kompilatora. Z drugiej strony, jeśli proces kompilacji Xcode nie powiedzie się z powodu jakiegoś tajemniczego ustawienia lub jeśli próbujesz zbudować bibliotekę statyczną w Xcode, to jest to wyraźnie problem Xcode. A jeśli nie możesz wymyślić, jak użyć jakiegoś obiektu NSObject lub klasy NSFileManager, to jest Cocoa. (Ale to nie musi być związane z Xcode, jak można użyć AppCode lub TextMate jako IDE!)


Originally available on my blog. Możesz zamieścić link do posta na blogu lub tego pytania podczas ponownego dodawania lub wyjaśniania różnicy.

+0

dobry post, ale muszę zapytać, na podstawie tego oświadczenia ... "Te biblioteki są nazywane kakao" ... powstaje pytanie, jaka jest różnica między ramami "Fundacji" i "Kakao"? Czy Cocoa siedzi na szczycie struktury Fundacji? – Leo

+0

Tak, Cocoa można uznać za najwyższą warstwę biblioteki, która znajduje się na szczycie Fundacji (patrz http://goo.gl/H22M8g). Innymi słowy, opis jest nieco nieprecyzyjny w tym punkcie - kakao jest tylko częścią stosu oprogramowania oferowanego przez Apple do pisania oprogramowania. – zoul

+0

Bardzo dobra i objaśniająca odpowiedź ... i naprawdę pomogła mi poznać różnicę. Ale pojawia się kolejne pytanie :) przez biblioteki Cocoa; czy to jest to samo co API? – Ahmadgeo

6

Xcode to zintegrowane środowisko programistyczne (IDE) - aplikacja, którą programiści używają do pisania oprogramowania na iOS i/lub OS X. Zawiera edytor, system kompilacji (ustalanie, co zbudować, aby wytworzyć pożądany cel) i sporo innych rzeczy.

Objective-C to główny język, w którym programiści piszą takie oprogramowanie. Mogą pisać jego fragmenty w czystym C, używać C++ lub połączyć je z Objective-C (produkując Objective-C++) lub napisać niektóre lub wszystkie z program w zupełnie innym języku, na przykład MacRuby, Java (z j2objc) lub C# (z MonoTouch).

Xcode zawiera kompilator Clang, który zamienia kod napisany w Objective-C, C i kilku innych językach na kod wykonywalny. Większość komunikatów o błędach pochodzi z języka Clang, a Xcode w dużym stopniu opiera się na indeksowaniu wyszukiwania, podświetlaniu składni i uzupełnianiu nazw kodu Objective-C.

Kakao i kakao Touch to ramy aplikacji. Każdy z nich jest zbiorem wielu indywidualnych frameworków (bibliotek przechowywanych w folderach o nazwie blahblah.Ramy), takie jak:

  • Foundation (oba): Ogólne narzędzia obiektowe, w tym NSString, bibliotece NSURL, NSFileManager itp
    • Fundacja rdzeń (obu): głównie to samo, ale różne, głównie o API C oparte zamiast Cel C
  • Zestaw aplikacji (Mac) aplikacji i okienkowanie ramy
  • UIKit (iOS) aplikacji i okienkowanie ramy
  • Rdzeń Gr aphics (oba): rysunek
  • Core Animation (obu): Sprite-zarządzania i animacji ram

(i wiele, wiele więcej, skąd one pochodzą, zwłaszcza na komputerach Mac)

Więc:

  • można użyć ramy oprócz kakao lub Cocoa touch, ale będziesz mieć trochę kakao/kakao kod dotykowy, na pewnym poziomie, w celu aplikacji rozmawiać z systemu odbierania zdarzeń, remis, itp. Struktury tha t specjalnie ukierunkowane na Maca i/lub iOS będą zawierały odpowiednie opakowania dla Ciebie na różnym poziomie jakości.
  • Możesz używać języka poza Objective-C, ale będziesz mieć wiele składniowych niezręczności, ponieważ większość Cocoa i Cocoa Touch są zaprojektowane dla unikalnych funkcji składniowych Objective-C (szczególnie selektorów).
  • Możesz użyć edytora oprócz Xcode, możesz nawet użyć systemu kompilacji oprócz Xcode (na przykład make), ale App Store firmy Apple oczekuje, że aplikacje będą budowane w określony sposób (szczególnie w odniesieniu do podpisywania kodu), chyba że " nie kierując reklam na Sklepy z aplikacjami, każdy inny system kompilacji musi replikować to, co robi Xcode, lub ryzykować, że jego użytkownicy będą odrzucani.
1

Oczywistym błędem nie jest odróżnienie Xcode od wszystkiego innego. Xcode to narzędzie, którego używasz do programowania - do edycji kodu, uruchamiania kodu, itp. Więc jeśli masz problemy z narzędziem (np. Okno nie pokazuje poprawnie kodu lub masz problem z rysowaniem twojego interfejsu itp.), to jest problem Xcode.

Jeśli nie rozumiesz, dlaczego Twój kod nie działa, to prawdopodobnie masz problem z celem C lub problem z kakao. Ale niekoniecznie będziesz wiedział, które.

  • Jest to problem, Objective-C, jeśli korzeń fatygę jest to, że nie wiem, jak działa język (np nie wiem co to za gwiazdka, albo że nie jest deklaracja instancji, lub że komunikaty do zera nie powodują błędów, ale też niczego nie robią).

  • Jest to problem kakaowy, jeśli nie rozumiesz architektury delegatów lub sposobu działania kontrolera widoku.

Ale moje doświadczenie z drogi ludzie stawiają pytania jest to, że mogą być nieświadomi który z nich jesteś ignorantem. Nie mam na myśli ciebie osobiście, mam na myśli nas wszystkich.Może to utrudnić prawidłowe postawienie pytania, ponieważ nie wiesz dokładnie, czego dokładnie nie wiesz - gdybyś to zrobił, wiedziałbyś o tym i prawdopodobnie nie miałbyś problemu (naprawić problem i przejść do następnej).

Powiązane problemy