Suche Einsteigertutorial für Carbon und Cocoa

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Suche Einsteigertutorial für Carbon und Cocoa

    Hallo!

    Ich bin neu von Windows auf den iMac als Coder umgestiegen.
    Ich bin noch unschlüssig, ob ich Carbon oder Cocoa verwenden soll.. tendiere jedoch eher zu Carbon.

    Auf jeden Fall will ich beide Sprachen erstmal kennenlernen, und kleine gleiche Tools programmieren, und den Gesamtcode dann vergleichen.

    Allerdings habe ich auf dem Mac noch nichts gecodet...bräuchte also 2 kleine Tutorial, die dem Blutanfänger in beiden Frameworks den Einstieg leichter machen.

    V.a. für Carbon finde ich da überhaupt nichts mehr =(

    Simon
  • Erstmal glueckwunsch zum erfolgreichen wechsel ;)

    dann ist die ADC Dokumentation von Apple sehr hilfreich... die kann jeder ADC Member herunterladen bzw. auch im Internet betrachten...

    desweiteren koenntest du dir das Tutorial Learn Cocoa ansehen, und durcharbeiten :)

    hmm... zu carbon wueste ich leider kein tutorial... aber sicher ein anderer aus der Community ;)
    sonst eben nur in der Dokumentation nachsehen... die allerdings in englisch ist

    mfg
    alonzo
  • Sicherlich sehr interessant für Dich ist dann diese Seite:

    developer.apple.com/referencel…rted/GS_Carbon/index.html

    Wenn Du als Hobbycoder umsteigst würde ich Dir Cocoa sehr ans Herz legen. Damit bekommst Du viel schneller ein Erfolgserlebnis!

    Als Profi-Coder musst Du natürlich kucken, was Du brauchst. Wenn ich allerdings Windows Code portiere, dann mache ich häufig die GUI-Oberfläche mit Cocoa neu, weil das so schön einfach ist (und die Dinge, die ich portiere hauptsächlich "unter der Oberfläche" arbeiten, d.h. die Oberfläche ist ohnehin nur eine Teststeuerung)

    Carbon und Cocoa sind im übrigen keine Gegensätze. Viele Dinge in OS X gibt es nur in Carbon Interfaces(1), aber man kann sie beliebig mischen, auch C, C++ und Objective-C

    Objective-C und Cocoa machen aber einfach Spass und erlauben es Dir, sich schön auf das zu konzentrieren, was Dir Spass macht.

    Alex

    1) Obwohl Cocoa das von Apple empfohlene und bevorzugte Framework für Anwendungen ist
    The only thing that really worried me was the ether.
  • Ich entwickle doch schon seit einiger Zeit an Windows...

    Nachdem, was ich bisher gelesen habe, scheint Carbon für mich die sinnvollere Alternative zu sein... aber ich möchte nicht vorschnell urteilen und die gleichen kleinen Tools in Carbon und Cocoa schreiben, um dann den direkten Vergleich zu haben.


    Dazu bräuchte ich allerdings für den Einstieg (mehr ist es ja nicht) ein kleines Tutorial, vor allem nun für Carbon, um zu lernen, wie ich mit xcode und Carbon umzugehen habe... ich hoffe jemand von euch findet da das Richtige für mich!
  • Der einzige Grund, warum man heute noch mit Carbon auf dem Mac einsteigen will ist meiner Meinung nach, wenn man ein neues C++ Cross-Platform Framework bauen will. Und wenn man das will sollte man, meiner Meinung nach, einen professionellen Grund haben und sich einen Erfahrenen Mac Programmierer ins Team holen.

    Eine neue Mac Anwendung in Carbon aufzubauen hat wenig Sinn. Warum sollte jemand das machen wollen, ist nur unnötiger Stress. Es gibt keine guten Tutorials, weil das Quasi noch OS 9 Kram ist. Das interessiert (fast) niemanden mehr.
    Wenn Du das wirklich, echt willst, dann solltest Du dieses Buch günstig gebraucht bekommen: oreilly.com/catalog/learncarbon/index.html

    Das Du lange Windows programmiert hast spielt für mich keine Rolle. Neue Frameworks musst Du so oder so lernen und -- wie gesagt, wenn sonst nichts dagegen spricht -- lernst Du da besser das, was mehr Zukunft hat. Wenn Du sagst: "Ich will aber nichts lernen" dann bleib einfach bei Windows.

    Davon Ausgenommen ist natürlich die Verwendung von Carbon unterhalb der Oberfläche, das ist weiterhin sinnvoll.

    Alex
    The only thing that really worried me was the ether.
  • Hallo!

    Meinst du also, es ist am besten, die Oberfläche, und die Programmierdinge, die mit der Oberfläche zu tun haben (simpel: Text aus Editfeld auslesen) in Cocoa zu machen und interne Dinge wie Sockets, oder HDOperationen mit Carbon zu machen?

    Oder habe ich dich da falsch verstanden?

    Ist es zum Beispiel Möglich in Xcode Klassen auf Carbonbasis zu erstellen, und diese dann im gleichen Code im Cocoa Framework mit Obj-C zu verwenden?
  • Original von MacNewbie
    Hallo!

    Meinst du also, es ist am besten, die Oberfläche, und die Programmierdinge, die mit der Oberfläche zu tun haben (simpel: Text aus Editfeld auslesen) in Cocoa zu machen und interne Dinge wie Sockets, oder HDOperationen mit Carbon zu machen?


    Ja, in etwa. Wenn ich Windows Code portiere mache ich es so, allerdings verwende ich dann POSIX Funktionen -- die gibt es ja auch auf Windows.

    Original von MacNewbieIst es zum Beispiel Möglich in Xcode Klassen auf Carbonbasis zu erstellen, und diese dann im gleichen Code im Cocoa Framework mit Obj-C zu verwenden?


    Ja, das kann man so sagen.

    Alex
    The only thing that really worried me was the ether.
  • Ok danke..dann werde ich mal zur ersten Einarbeitung versuchen, ein kleines Netzwerktool zu schreiben, welches mit Sockets umgehen kann.

    Diese Sockets verpack ich dann in einer eigenen Carbonklasse.

    Diese Klasse versuche ich dann mit einer Cocoaanwendung zu benutzen... bei Fragen frag ich dich :D

    Danke!
  • Original von MacNewbieDiese Sockets verpack ich dann in einer eigenen Carbonklasse.


    Warum? Auf dem Mac hast Du die Wahl zwischen vielen verschiedenen Technologien, und Du solltest die nehmen, die für Deinen Zweck am besten ist.

    Wenn Du C APIs suchst, dann kannst Du für Sockets CoreFoundation (CFSocket) oder BSD Sockets (socket(2) etc.) verwenden (meine persönliche Wahl wäre das letztere).

    Ein echtes Carbon Interface hier wäre OpenTransport... aber das willst Du mit Sicherheit nicht verwenden, und ich hoffe auch, dass das gar nicht mehr in OS X drin ist.

    Alex
    The only thing that really worried me was the ether.
  • Hallo!

    So habe jetzt den ganzen Tag rumgewerkelt...

    Ganz schön hart als C++er sich so umzustellen... das schlimmste ist die Tastatur.. wo die eckigen Klammern stehen und wie sie angesprochen werden ist ja schlimmst..kann man das umstellen?


    In welcher Referenz schau ich eigentlich nach, wenn ich wissen will, wie eine Funktion verwendet wird? Unter Windows gabs die gute alte MSDN..aber jetzt?

    Zum Beispiel für die Benutzung von NSRunInformationalAlertPanel oder so.. wie heißt diese Referenz?


    Dann sehr wichtig:

    Wenn ich Klassen in Carbon geschrieben habe, wie binde ich die dann in meinen Cocoa source ein?

    Wenn ich eine ganz einfache Carbon C++ Klasse in einer .cp habe:

    class simple{

    float var;

    simple() { var = 4; }

    float foo(float a) { return var + a };

    }

    wie binde ich sowas in meinen Cocoasource ein und verwende es? Sagt bitte nicht dass es nicht geht... ist unbedingt nötig.

    Ansonsten finde ich die Einfachheit der Oberflächengestaltung und Einbindung in den Code ziemlich gelungen!
  • Die Doku kannst du per "Help"->"Documentation" aufrufen. Man kann auch einfach eine Methode/Klasse/Funktion... Alt-Doppelklicken.

    Hab jetzt noch nie C++ und ObjC gemischt, aber das sollte gehen, wenn du die Dateiendung einfach zu ".mm" änderst, das ist dann sog. Objective-C++.
    "Wales is the land of my fathers. And my fathers can have it." - Dylan Thomas
  • Original von MacNewbie
    Wenn ich eine ganz einfache Carbon C++ Klasse in einer .cp habe:

    ...

    wie binde ich sowas in meinen Cocoasource ein und verwende es?


    1) Was hat Deine Klasse mit Carbon zu tun?

    2) Wie würdest Du es denn normalerweise tun? Geht das nicht?

    EDIT: Tip: Nenne Deine Objective-C files nicht .m, sondern .mm. Dann werden sie automatisch als Objective-C++ erkannt

    Alex
    The only thing that really worried me was the ether.
  • Es funktioniert! Es funktioniert ja doch ganz einfach!

    Ich bin begeisert.. jippi =)

    Also tatsächlich... Oberfläche Cocoa, Untergrund C++ / Carbon.. :)

    Ich weiß, da war nichts mit Carbon... aber darin könnte ich ja theoretisch CarbonAPI verwenden.. wie toll :) *freu*


    Jetzt muss ich nur noch diese verflixte gemeinsame Internetverbindung zum Laufen bekommen :(


    Danke!

    Simon
  • Hallo!

    Das mit den Bindings habe ich soweit dann drin.. ist ja praktisch wie MFC Steuerelemtnvariablen..

    Was ich vermisse sind meine Windowsevents wie WM_LBUTTONDOWN oder WM_MOUSEMOVE etc.. sowas gibts doch bei Cocoa auch? Nur wo?

    Mit der Referenz müsste ich auch mal lernen richtig umzugehen..

    Simon
  • Original von MacNewbie
    Das mit den Bindings habe ich soweit dann drin.. ist ja praktisch wie MFC Steuerelemtnvariablen..

    Was ich vermisse sind meine Windowsevents wie WM_LBUTTONDOWN oder WM_MOUSEMOVE etc.. sowas gibts doch bei Cocoa auch? Nur wo?


    "Das ist eine Ketzerei wider das grossartige Apple OS X und ärgerlich zu hören."

    Also wenn Du auf diesen WM_DINGENSBUMENS Masochismus stehst dann mach doch Carbon.

    Jedes NSControl hat eine "action", also "datt watt passieren soll wenn man da drauf drücken tut"

    Im Interface Builder verbindest Du einfach einen Button mit einer entsprechenden IBAction Methode in einem Objekt Deiner Wahl (kann man auch programmatisch machen)

    Wenn Dich jetzt wirklich weiterführende Dinge interessieren (also Maus gedrückt etc) empfiehlt es sich normalerweise, das entsprechende Control zu subklassen.

    Aber ich empfehle Dir noch ein paar Tutorials. Hat Du den Calculator schon gemacht?

    Und ein gutes Buch ist hier auch sicher die Investition Wert.

    Die zwei Fraktionen im empfehlen:

    Buch: Objective-C und Cocoa 2

    oder den Englischsprachigen Klassiker

    bignerdranch.com/products/cocoa1.shtml

    Alex
    The only thing that really worried me was the ether.
  • - Sondertasten können hier eingestellt werden:
    Systemeinstellungen -> Tastatur & Maus -> Tastatur -> Sondertasten

    - Mit <COMAND-ALT-T> kann eine Zeichenpalette eingeblendet werden.

    -Live-Tastatur
    Systemeinstellungen -> Landeseinstellungen -> "Tastaturmenü"

    Wenn Du die Option "Tastaturübersicht" aktivierst und das "Tastaturmenü" in der "Menüleiste" anzeigen lässt, hast Du in 2 Mausklicks eine Live-Tastatur auf dem Bildschirm

    Viel Spass

    Alain
  • Würde den Taschenrechner gerne machen..allerdings wurde der Downloadbereich wie ich gelesen habe aus dem Forum genommen-- oder finde ich ihn nur nicht?


    Ich werde auf jeden Fall noch ein paar Tutorials machen und mir die mitgelieferten Beispielsources zu Gemüte führen..

    Gibt es zwischen Carbon und Cocoa eigentlich noch einen großen Unterschied ausser der komplett unterschiedlichen Oberflächenbehandlung und der anderen Syntax?


    (kann ich irgendwo die eckigen Klammern auf eine von mir gewünschte Tastenkombi legen? Kann mich nicht an diese Standardmackombi gewöhnen)

    Danke euch..Simon
  • Original von MacNewbie
    Gibt es zwischen Carbon und Cocoa eigentlich noch einen großen Unterschied ausser der komplett unterschiedlichen Oberflächenbehandlung und der anderen Syntax?


    Öööhhh, also, das ist ein bischen so als wenn Du fragst, ob es auch einen Unterschied zwischen einem Auto und einem Fahrrad gibt -- ausser der Farbe und der Reifengröße, schliesslich sind beides ja Fortbewegungsmittel.

    Carbon ist ein Framework für C, Cocoa ist ein Framework für Objective-C (und Java, aber das ist eine andere Geschichte...).

    Die Syntax hat nichts mit Carbon vs. Cocoa, sondern mit C++ vs. Objective-C zu tun.

    Alex
    The only thing that really worried me was the ether.
  • ok..

    naja der beste weg das zu lernen, nachdem ich nun die obj-c syntax verstanden habe ist es sowieso Beispiele nachzuvollziehen bzw. selbst zu programmieren...

    Ich werde wohl vermutlich erstmal ein Netzwerktool programmieren, mit dessen Hilfe ich hier auf meinem Mauspad nicht mehr 2 Mäuse liegen habe sondern beide PCs mit einer Maus bedienen kann... evtl. mach ich das dann noch für die Tastatur... wäre doch ziemlich praktisch wenn ich beide PCs über meine Windowstastatur bedienen könnte :)


    Kannst du mir eine kleine Hilfestelle geben, wie ich am Besten nach "Äquivalenten" aus der Windowsprogrammierung in der Macprogrammierung suche?

    zB würde ich für das oben genannte Tool auf dem Mac Funktionen wie "keybd_event" bzw. "mouse_event" brauchen.. oder aber zu mindest "Set/GetCursorPos"

    Danke nochmal für deine Geduld und Erklärungen!

    Simon