Zufällige Schriftart auswählen

  • macmoonshine schrieb:

    Amin Negm-Awad schrieb:

    Der Hintergrund ist wohl, dass man nicht zwischen ID und Objekt unterscheidet. Das findet sich aber auch hier immer wieder, wenn auch subtiler. Schau dirmal den Kommentar an:
    //Erzeugen eines Strings und füllen mit einem Eintrag aus dem Font-Family Array

    Fang' jetzt nicht noch mit der Sinnhaftigkeit von bestimmten Kommentaren an. ;) // Eine Bemerkung, der ich nicht widerstehen konnte, auf ein Zitat von Amin

    ;) // Ein Emoticon

    +scnr+ // Keine Ahnung wozu das gut ist - habe ich so in einem YouToube-Tut gesehen

    Der Kommentar ist sehr sinnhaft, weil er zeigt, dass der Verfasser Objekt und ID verwechselt (in einen Topf wirft.)
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Ehrlich gesagt, kann ich das nicht nachvollziehen. Gelesenes verinnerlicht man ganz sicher besser als Gehörtes. Zurückblättern ist auch schwieriger und man kann nicht mal eben stehenbleiben, wenn man irgendwo Zweifel hat.

    Meine erste MacOS-X-App war das Dot-Tutorial von Apple. Ich habe das Programm mit dem Video zusammen nachprogrammiert. Das war als Einstieg, wo ist welcher Knopf im IB und Xcode, ganz hilfreich und ich hatte ein schnelles Erfolgserlebnis. Für das weitere Fortkommen reicht das natürlich nicht aus.

    Ich schau mir auch selten nur Videos an, weil ich da so schlecht quersehen kann.
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Amin Negm-Awad schrieb:

    Ehrlich gesagt, kann ich das nicht nachvollziehen. Gelesenes verinnerlicht man ganz sicher besser als Gehörtes. Zurückblättern ist auch schwieriger und man kann nicht mal eben stehenbleiben, wenn man irgendwo Zweifel hat.

    Meine erste MacOS-X-App war das Dot-Tutorial von Apple. Ich habe das Programm mit dem Video zusammen nachprogrammiert. Das war als Einstieg, wo ist welcher Knopf im IB und Xcode, ganz hilfreich und ich hatte ein schnelles Erfolgserlebnis. Für das weitere Fortkommen reicht das natürlich nicht aus.

    Ich schau mir auch selten nur Videos an, weil ich da so schlecht quersehen kann.

    Sach ich ja: Ein Video ist linear.

    Ich habe mir dazu auch schon was überlegt, wie man das beseitigen kann. Derzeit komme ich aber nicht dazu.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Sach ich ja: Ein Video ist linear.

    Ist ein Buch nicht linear?

    Ich habe mich letztes Jahr im Sommer mit einem bekannten rheinischen Cocoa-Autoren unterhalten. Der Name ist mir aber entfallen. Er meinte, er würde seine Bücher so schreiben, dass sie nicht quergelesen können ;)

    Amin Negm-Awad schrieb:

    Ich habe mir dazu auch schon was überlegt, wie man das beseitigen kann. Derzeit komme ich aber nicht dazu.

    Meinst Du nicht lineare Videos?
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Amin Negm-Awad schrieb:

    Sach ich ja: Ein Video ist linear.

    Ist ein Buch nicht linear?

    Ich habe mich letztes Jahr im Sommer mit einem bekannten rheinischen Cocoa-Autoren unterhalten. Der Name ist mir aber entfallen. Er meinte, er würde seine Bücher so schreiben, dass sie nicht quergelesen können ;)

    Ich meinte, dass ich diese beiden Bände so geschrieben habe. Aber es gibt ja unentwegt was Neues von mir.

    Übrigens stimmt das auch nicht. Natürlich gehe ich ständig davon aus, dass Leser zurückschlagen, um noch etwas wieder in Erinnerung zu rufen. Aber man kann halt nicht auf Seite 576 aufschlagen und anfangen.

    macmoonshine schrieb:

    Amin Negm-Awad schrieb:

    Ich habe mir dazu auch schon was überlegt, wie man das beseitigen kann. Derzeit komme ich aber nicht dazu.

    Meinst Du nicht lineare Videos?

    Na, ja, so in etwa.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:


    macmoonshine schrieb:

    Amin Negm-Awad schrieb:

    Ich habe mir dazu auch schon was überlegt, wie man das beseitigen kann. Derzeit komme ich aber nicht dazu.

    Meinst Du nicht lineare Videos?

    Na, ja, so in etwa.

    Meinst Du E-Learning?

    Das Prinzip gab es wohl auch mal mit Büchern. Da stand dann immer, auf welche Seite man jetzt blättern soll wenn man dies und jenes noch nicht verstanden hat. Bzw. man muss eine Aufgabe rechnen und je nach Ergebnis auf eine andere Seite blättern, die einem dann seinen Fehler verrät.
    C++
  • Es wäre nett wenn ihr mich aufklären könntet wo genau meine Fehler im Code (und auch in meinen weltklasse "achtung Ironie" Kommentaren) liegen.
    Ich möchte euch nicht als Fachidioten bezeichnen, allerdings wurde ich aus den bisherigen Posts nicht 100%ig schlau.
    Liegt vermutlich daran dass ich doch noch immer ziemlich am Anfang bin obwohl ich mich jetzt schon seit ungefähr 2 Monaten für Objective C, Cocoa und Cocoa Touch aufzehre.
    Ich komme übrigens von Java.

    An welcher Stelle genau ist der Speicherleak und welches Objekt muss ich releasen um dies zu verhindern?
    Was könnte ich besser/anders lösen?

    Ich würde den Code gerne so ändern dass alles perfekt (oder jedenfalls ohne gravierende Fehler) ist,
    nicht dass andere Leute, sollten sie meinen Codeschnipsel verwenden wollen, auch meinen fehlerhaften Code einsetzen.

    Grüße
    Descan
  • Descan schrieb:

    Amin Negm-Awad schrieb:

    Die Stelle hatte ich doch über den Kommentar genannt.
    Bedeutet das, dass ich im Prinzip nur eine Referenz auf den Eintrag an der Stelle r im familiyNames Array in meinen String schreibe per name = [familyNames objectAtIndex:r]; ? Und nicht den Eintrag an der Stelle r selbst?

    Es gibt in Objective-C nur Heap-Objekte.

    Es bedeutet also, dass du vielleicht etwas Einführendes lesen solltest, vor allem, wenn du bereits zwei Monate dran sitzt.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Descan schrieb:

    Amin Negm-Awad schrieb:

    Die Stelle hatte ich doch über den Kommentar genannt.
    Bedeutet das, dass ich im Prinzip nur eine Referenz auf den Eintrag an der Stelle r im familiyNames Array in meinen String schreibe per name = [familyNames objectAtIndex:r]; ? Und nicht den Eintrag an der Stelle r selbst?

    Es gibt in Objective-C nur Heap-Objekte.

    Es bedeutet also, dass du vielleicht etwas Einführendes lesen solltest, vor allem, wenn du bereits zwei Monate dran sitzt.
    Ich habe mir schon ein wenig Literatur zugelegt, angefangen habe ich mit O'Reillys iPhone Programming,
    dann hab ich mir Tutorials (ja die bei denen man im Prinzip nichts lernt) von thenewboston auf youtube angeschaut und von lynda.com das iPhone SDK Essential Training durchgemacht.
    Da wird halt immer viel erklärt wie ich bestimmte Probleme lösen kann, leider fehlt mir glaube ich ein umfassendes Grundverständnis von Objective C.
    Hast du mir ein paar gute Empfehlungen für weitere Literatur?

    Oft finde ich Lösungen für bestimmte Teilprobleme auch bei stackoverflow oder eben hier im Forum (sehr nettes Forum übrigens!).
  • Descan schrieb:

    Amin Negm-Awad schrieb:

    Descan schrieb:

    Amin Negm-Awad schrieb:

    Die Stelle hatte ich doch über den Kommentar genannt.
    Bedeutet das, dass ich im Prinzip nur eine Referenz auf den Eintrag an der Stelle r im familiyNames Array in meinen String schreibe per name = [familyNames objectAtIndex:r]; ? Und nicht den Eintrag an der Stelle r selbst?

    Es gibt in Objective-C nur Heap-Objekte.

    Es bedeutet also, dass du vielleicht etwas Einführendes lesen solltest, vor allem, wenn du bereits zwei Monate dran sitzt.
    Ich habe mir schon ein wenig Literatur zugelegt, angefangen habe ich mit O'Reillys iPhone Programming,
    dann hab ich mir Tutorials (ja die bei denen man im Prinzip nichts lernt) von thenewboston auf youtube angeschaut und von lynda.com das iPhone SDK Essential Training durchgemacht.
    Da wird halt immer viel erklärt wie ich bestimmte Probleme lösen kann, leider fehlt mir glaube ich ein umfassendes Grundverständnis von Objective C.
    Hast du mir ein paar gute Empfehlungen für weitere Literatur?

    Oft finde ich Lösungen für bestimmte Teilprobleme auch bei stackoverflow oder eben hier im Forum (sehr nettes Forum übrigens!).

    Das ist eben das Problem, wenn man sich Wissen zusammenpastet. Die wirklichen Grundlagen gehen verloren.

    Ja, ich habe eine Idee. Google einfach meinen Namen.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Es gibt in Objective-C nur Heap-Objekte.

    Gibt es dafür eigentlich tiefere philosophische Gründe?
    Sicherlich ist die Herangehensweise eine ganz andere und es hat sich historisch so entwickelt, aber gibt es in Deinen Augen etwa einen besonderen Nachteil mit Stack-Objekten, wie man es etwa in C++ macht? Natürlich braucht man dann Destruktoren etc. aber das ist ja erstmal nicht verkehrt, und erspart einem viel Speicher-Management, wie ich finde.
    C++
  • zerm schrieb:

    Amin Negm-Awad schrieb:

    Es gibt in Objective-C nur Heap-Objekte.

    Gibt es dafür eigentlich tiefere philosophische Gründe?
    Sicherlich ist die Herangehensweise eine ganz andere und es hat sich historisch so entwickelt, aber gibt es in Deinen Augen etwa einen besonderen Nachteil mit Stack-Objekten, wie man es etwa in C++ macht? Natürlich braucht man dann Destruktoren etc. aber das ist ja erstmal nicht verkehrt, und erspart einem viel Speicher-Management, wie ich finde.

    Es ist schlicht unnötig.

    Das "ersparte viel Speicher-Managemant" bei Stackobjekten ist nichts anderes als ein autorelease bei der Erzeugung oder gleich mittels Convenience-Allocator. Das macht man doch ohnehin.

    Demgegenüber hast du den ganzen Kram bei der Konstruktion. Da in Objective-C vorzugswürdig Methoden und nicht das Laufzeitsystem für die Erstellung von Objekten zuständig ist, muss man letztlich doch wieder ein System für die Parametrisierung schaffen. Und wie sähe das dann aus?

    Quellcode

    1. NSString instance[stringWithFormat:…];

    statt

    Quellcode

    1. NSString* instance = [NSString stringWithFormat:…];

    Und dieses zweite, überflüssige System dann dafür, dass ich kein nil mehr zurückgeben kann, sondern auch noch Exceptions abfangen muss.

    Man kann sich wirklich auch Nadeln unter die Fingernägel schieben. Das schmerzt weniger.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Hm ich weiß nur von früher, das der ekeligste Fehler der passieren konnte ein Stacküberlauf war. Dann geht nämlich gar nichts mehr. Nicht einmal mehr ein Funktionsaufruf zu einer Fehlermeldung. Deshalb finde ich es nicht schlau wenn man den Stack mit Objekten zukleistern kann. Denn wenn dann der Speicher mal alle ist, dann bekommt man einfach einen OutOfMemory, den man auf Grund des noch reservierten und nicht vollen Stacks sauber abfangen kann.

    Aber eventuell ist das ja heute alles ganz anders gelöst.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Abgesehen von Amins Begründung bekommst Du auch noch Probleme bei einfachen Zuweisungen:

    Quellcode

    1. self.name = instance; // Geht nicht, rechte Seite ist kein Pointer auf einen String
    2. self.name = &instance; // Geht auch nicht - viel Spaß beim Debuggen
    3. selff.name = [[&instance copy] autorelease]; // Na toll; gibt aber Probleme mit Objekten, die nicht kopieren sondern nur retainen
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Abgesehen von Amins Begründung bekommst Du auch noch Probleme bei einfachen Zuweisungen:

    Quellcode

    1. self.name = instance; // Geht nicht, rechte Seite ist kein Pointer auf einen String
    2. self.name = &instance; // Geht auch nicht - viel Spaß beim Debuggen
    3. selff.name = [[&instance copy] autorelease]; // Na toll; gibt aber Probleme mit Objekten, die nicht kopieren sondern nur retainen

    Na, ja, mit GC ginge es.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Na, ja, mit GC ginge es.

    Das glaube ich nicht. Das Objekt liegt ja auf dem Stack und der wird ja bei jedem Funktions- und Methodenaufruf verändert, z. B.:

    Quellcode

    1. [self weiseStringZu]; // Hier ist eine von den o. g. Zuweisungen drin
    2. [self tiefVerschachtelteRekursion];

    Der zweite Aufruf überschreibt Dir zuverlässig Dein Stringobjekt auf dem Stapel.
    „Meine Komplikation hatte eine Komplikation.“
  • Amin Negm-Awad schrieb:


    Es ist schlicht unnötig.

    Das lasse ich als Argument nicht gelten. Obj-C ist auch unnötig, ich kann auch Assembler im Hex-Editor tippen.

    Amin Negm-Awad schrieb:


    Das "ersparte viel Speicher-Managemant" bei Stackobjekten ist nichts anderes als ein autorelease bei der Erzeugung oder gleich mittels Convenience-Allocator. Das macht man doch ohnehin.

    Ok, das ist ein Punkt. Ich finde es dennoch sub-optimal in manchen Fällen. Hält eine Klasse eine Member, muss dieses natürlich retained werden. Dann darf aber das release eben nicht vergessen werden, wenn die Instanz aufgelöst wird.
    Wenn ich in C++ ein std::vector als Member habe, brauche ich mich um nichts zu scheren (wenn die Klasse jetzt im Stack instantiiert wird).

    Amin Negm-Awad schrieb:


    Demgegenüber hast du den ganzen Kram bei der Konstruktion. Da in Objective-C vorzugswürdig Methoden und nicht das Laufzeitsystem für die Erstellung von Objekten zuständig ist, muss man letztlich doch wieder ein System für die Parametrisierung schaffen. Und wie sähe das dann aus?

    Quellcode

    1. NSString instance[stringWithFormat:…];

    statt

    Quellcode

    1. NSString* instance = [NSString stringWithFormat:…];

    Und dieses zweite, überflüssige System dann dafür, dass ich kein nil mehr zurückgeben kann, sondern auch noch Exceptions abfangen muss.

    Man kann sich wirklich auch Nadeln unter die Fingernägel schieben. Das schmerzt weniger.

    Named Parameter im C'tor wären doch kein Problem, wenn man named Parameter will. Siehe Python-Syntax. Geht auch in C++, wenn man den "Wahnsinn" im Hintergrund dafür in Kauf nehmen will.
    Das mit dem nil sehe ich auch nicht als Vorteil. In der Entwicklung bevorzuge ich, dass etwas richtig kracht, wenn etwas passiert, was ich nicht erwarte. Im Deployment sollte ich explizit auf Fehler testen müssen. Vielleicht liegt es an meiner immernoch vergleichsweise kleinen Erfahrung in Obj-C, aber ich hab mich schon öfters gefragt, warum nicht das passiert, was ich erwarte, nur um dann festzustellen, dass irgendwo etwas nil ist und sich das dann Seuchenartig im ganzen Programm ausbreitet. Bisschen wie NaN :P
    C++
  • macmoonshine schrieb:

    Abgesehen von Amins Begründung bekommst Du auch noch Probleme bei einfachen Zuweisungen:

    Quellcode

    1. self.name = instance; // Geht nicht, rechte Seite ist kein Pointer auf einen String
    2. self.name = &instance; // Geht auch nicht - viel Spaß beim Debuggen
    3. selff.name = [[&instance copy] autorelease]; // Na toll; gibt aber Probleme mit Objekten, die nicht kopieren sondern nur retainen

    Ja, in C++ kopieren wir etwas viel. Der erste Fall funktioniert einwandfrei und in der Regel wird schlicht kopiert.
    Ich kann auch etwas wie smart pointer verwenden, die die ganze Heap-Geschichte für mich verstecken und dann nur zuweisen, fall es wirklich das ist, was ich brauche.
    C++