Verständnis Fragen zu Objectiv-C

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

  • Verständnis Fragen zu Objectiv-C

    Guten Morgen,

    vornerein ich bin noch Anfänger was das Thema Objectiv-c
    betrifft. Eigentlich bin ich in der Welt von Java unterwegs und als ich das
    erste Mal Syntax von Objc gesehen hab, war ich auch ziemlich verwirrt. Erste Reaktion:
    Was machen die ganzen Eckigen Klammern da :D
    Naja wie auch immer, ich glaube das ich zuvor Java gelernt habe fällt
    mir nicht gerade in den Schoss. Ich habe ein paar Verständnis Probleme und ich
    hoffe dass ihr mir vielleicht dabei helfen könnt sie zu lösen. Ich lese gerade
    das Buch „Apps entwickeln für iPhone und iPad“ allerding bin ich ein bissen von
    diesem Buch enttäuscht und sehr weit hat es mich auch nicht gebracht, daher
    meine Fragen:

    1.
    In Java habe ich meinen Konstruktor
    beziehungsweiße meine Main Methode, diese hab ich ja beim Apps entwickeln nicht
    (oder?) daher meine Frage wo rufe ich
    meine selbst geschrieben Methoden auf?

    2.
    Ich habe gehört das es aufrufe wie „[View needsDisplay];
    „ gibt.. Diese Methode wird also immer aufgerufen wenn eine neue View Ansicht
    verlangt wird. Ist das so richtig? Bin ich auf dem Holzweg? Und wenn es richtig
    ist, gibt es mehrere solcher „aufrufe“?


    3.
    Was hat es mit der Klasse NSNotificationCenter
    auf sich? Bislang dachte ich immer sie sei dazu da um z.B alerts, AUßERHALB der
    App benutzen zu können, nun wird sie allerding auch anderweitig benutzt.

    4.
    Kennt vielleicht jemand ein Buch oder eine Seite
    wo genau gesagt wird wie es in Java ist und wie es dann wiederum in Objectiv-C
    ist?


    Ich hoffe ihr könnt mir helfen Objectiv-C ein bisschen
    näherzubringen :)

    Vielen Dank schon mal

    Liebe Grüße
  • Hi Yannig,

    mit Java als Vorbelastung hast du so ziemlich den schwersten Umstieg den man sich denken kann. Du musst einfach alles vergessen was Du bisher gelernt hast und bei 0 anfangen und das ist schwer. Man glaubt ja man kann schon programmieren und denkt deshalb man ist über das Hello World hinaus. Das das nicht so ist beweisen Deine Fragen.

    Du musst Dir einfach die Zeit nehmen und ganz unten anfangen und erst einmal die Grundlagen lernen. Wenn du das nicht tust, dann endest du da wo ich im Moment die Feuerwehr spiele. Ich habe gerade den Code von ein paar Java-Entwicklern die auch "mal eben" eine Apple App geschrieben haben vorliegen. Eigentlich müsste man den Code komplett neu schreiben und das ist locker ein halbes Jahr Arbeit. Ich versuche zu retten was zu retten ist.

    Deine Fragen kannst du Dir ganz leicht selber beantworten, wenn Du einfach mal die Getting Startet Docs von Apple durchließt.

    Also investiere erst einmal ein paar Tage nur in der Lektüre von den Grundlagen und fang dann mit einer ganz einfachen App an.

    Sorry das ich Dich nicht weiter aufbauen kann aber dir irgendetwas vormachen bringt auch nichts.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:


    mit Java als Vorbelastung hast du so ziemlich den schwersten Umstieg den man sich denken kann. Du musst einfach alles vergessen was Du bisher gelernt hast und bei 0 anfangen und das ist schwer. Man glaubt ja man kann schon programmieren und denkt deshalb man ist über das Hello World hinaus. Das das nicht so ist beweisen Deine Fragen.

    Also so schlimm sehe ich das nicht. Wer Java kann, kennt schon Objekte, Klassen, Methoden, Ableitung, Referenzen, Getter, Setter, Event Loop, Design Patterns usw. Nur die Syntax ist deutlich anders.

    0. eckige Klammern

    In Java schreibt man

    Quellcode

    1. object.methodWithTwoParameters(parameter1, parameter2)

    In Obj-C schreibt man

    Quellcode

    1. [object methodWith:parameter1 secondParameter:parameter2]

    D.h. das ist einfach ein Methodenaufruf.

    Bei einfachen Gettern und Settern kann man seit Obj-C 2.0 auch die von Java geläufige "Dot"-Notation verwenden.
    Weil da versäumt wurde das auf beliebige Methoden zu erweitern, gibt es den Mischmasch aus Dot-Notation und eckigen Klammern.

    1. Konstruktor

    wird durch eine init-Methode abgebildet

    Die main-Methode ist NSApplication awakeFromNib oder applicationDidFinishLoading. Das liegt daran, dass die Initialisierung gleich kompleet mit UI stattfindet.
    Du kannst aber auch eine main()-Funktion (Standard-C!) schreiben.

    2. needsDisplay

    gehört zum Grafiksystem (vglb. Swing/AWT repaint-Methode). Das setzt einfach ein Flag, dass der View einen Update braucht. Das System weiß dann wann es stattfinden soll und ruft dann -drawRect (vgl. paintComponent) auf, wo konkret gemalt wird.

    3. NotificationCenter

    sendet asynchrone Messages zwischen Objekten innerhalb einer Applikation. NSDistributedNotification läuft zwischen separaten Prozessen.

    4. wollte ich mal schreiben als ich einen Java-Kurs gehalten habe und immer wieder nach Obj-C gefragt wurde. Habe aber leider nie damit angefangen :(

    -- hns

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von hns ()

  • Hallo yanning und willkommen auf der dunklen Seite der Macht.
    Du weißt schon, die mit den Keksen. ;)

    Als Link sei dir ans Herz gelegt:
    blog.codecentric.de/en/2011/04…a-developers-objective-c/

    Ist zwar kein Buch, tut aber ungefähr das, was du möchtest: auflisten, was in Java so und in Objective-C anders gemacht wird.
    Hoffe dat hilft. :)
    (Der Memory Management Teil betrifft MRR*, aktuell sollte aber ARC** genutzt werden.)

    * Manual Retain Release - gern auch MRC -> Manual Reference Counting
    ** Automatic Reference Counting, ähnlich der Garbage Collection (im Sinne von "Objekt korrekt anlegen und vergessen."), nur viel viel viel viel besser™***

    *** www-cs.canisius.edu/~hertzm/gcmalloc-oopsla-2005.pdf
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P