Diskussion:Objective-C

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 7 Jahren von 78.34.98.34 in Abschnitt Lizenz?
Zur Navigation springen Zur Suche springen

Neutralität, inhaltliche Fehler[Quelltext bearbeiten]

Ganz nette Informationen, aber irgendwie... nicht sonderlich neutral, da der Autor offenbar ein begeisterter Obj-C-Anhänger ist und anscheinend meint, sich immer gegen C++ verteidignen zu müssen. Class-Objekte gibt es im Übrigen auch in Java, und die Möglichkeiten, die sie bieten scheinen die gleichen zu sein wie in Obj-C. --RokerHRO 17:38, 29. Jun 2004 (CEST)

Ganz nette Information, kann ich mich nur anschließen. Da C++ weiter verbreitet als Obj C ist, ist ein Vergleich oder Abgrenzung der beiden Sprachen durchaus angebracht. Unvorteilhaft fand ich eher das letzte Beispiel, in dem Cocoa-Aufrufe benutzt werden. Wer Obj C auf einem anderen Rechner als Mac OS X ausprobieren will, wird leider nicht weit kommen. Auch werden Aufrufe geschachtelt, wobei die Vorgehensweise im vorlaufendem Text nicht erwähnt wird. (nicht signierter Beitrag von 81.14.155.212 (Diskussion) 26. Dez. 2004)
Richtig. Klassenobjekte gibt es auch in Java. Ohnehin hatte Objective-C einen sehr starken Einfluss auf die Entwicklung von Java. In objektorientierter Hinsicht sind die Sprachen in vielen Stellen fast identisch. Die groessten Unterschiede bestehen meiner Meinung nach in der Syntax, die bei Objective-C verglichen mit anderen Sprachen etwas unkonventionell ist. :->
Ich habe dieses Semester eine Ausarbeitung ueber Objective-C geschrieben, und bin gerne bereit, den Text komplett oder auszugsweise beizusteuern. --Günther Noack, 26. Februar 2005
Gerne! Wäre schön diese Ausarbeitung hier zu haben. --Rakl123 16:47, 26. Mär 2005 (CET)
"Klassenobjekte gibt es auch in Java" das ist leider falsch. In Java gibt es nur Objekte die Klassen beschreiben. Dies sind aber keine Klassenobjekte, wie man sie in rein objektorientierten Programmiersprachen vorfindet. Siehe http://en.wikipedia.org/wiki/Smalltalk: "In other words: classes are first-class objects". Frank Schuster 11:44, 23. Feb. 2007 (CET)Beantworten
Soweit ich die Beispiele überblicke, handelt es sich dabei nicht um Cocoa-Code, sondern Foundation-Klassen und -Funktionen, die auch GNUstep unterstützen sollte. (nicht signierter Beitrag von 84.58.157.59 (Diskussion) 13. Dez. 2005)

Vergleich mit C++[Quelltext bearbeiten]

Hallo, ich habe den Eindruck, dass der Artikel aus viel zu vielen Vergleichen mit C++ besteht. Objective C definiert sich nicht über C++ sondern ist eine eigenständige Entwicklung. Viel wichtiger wäre an dieser Stelle wie Objective C funktioniert, mit klaren Beispielen. Ich würde es ja selbst machen, aber auf dem Gebiet von Objective C bin ich absolut nicht sicher. --Rbb 22:19, 25. Okt 2005 (CEST)

Das dürfte daran liegen, dass er offenbar von meinem Artikel http://www.macentwicklerwelt.net/index.php?title=Objective-C_für_Cpp_-_Programmierer abgekupfert ist. Weniger schön ist es allerdings, dass darauf nicht verwiesen wird. --Tom9811 14:41, 20. Feb 2006 (CET)

Überarbeiten[Quelltext bearbeiten]

Der Artikel bedarf einer Überarbeitung. Ich ertaste gerade erst die Objective C Welt und habe daher nicht die idealen Vorraussetzungen dies im alleingang zu unternehmen:

  • Der Artikel sollte nicht auf Vergleichen zu C++ basieren. Ein Vergleich mit C++ ist in dem Artikel natürlich wichtig, aber nicht in der jetzigen Form. Die Sprache sollte lieber für sich beschrieben werden und dann die unterschiedlichen Ansätze (auch im Bezug auf Algol vs Smalltalk)
  • Die Link Qualität sollte überprüft werden
  • ...

--Kingruedi 18:13, 30. Okt 2005 (CET)

Kurzinformation zu Objective-C++ fehlt[Quelltext bearbeiten]

http://gcc.gnu.org/gcc-4.1/changes.html

Habe es in der Einleitung ergänzt, da auch Objective-C++ als Redirect hierher führt. Zusätzliche Quelle: http://www.golem.de/0603/43716.html. --Revvar (D RT) 09:14, 12. Jul 2006 (CEST) Falls jemand Lust hat das Thema und insbesondere die Einschränkungen der Mischbarkeit in einen eigenen Absatz zu erläutern, ist das: http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_4_section_10.html eine gute Quelle. --Revvar (D RT) 09:17, 12. Jul 2006 (CEST)
Habe als Anfang mal den entsprechenden Abschnitt aus der Englischen Wikipedia übersetzt. Oefe 14:54, 22. Mai 2008 (CEST)Beantworten

Objective-C 2.0[Quelltext bearbeiten]

Mit OSX 10.5 wird Apple XCode 3.0 und Objective-C 2.0 veröffentlichen. Die Neuerungen (Garbage Collection, Object-Iteration, Properties, Syntax-Erweiterungen) sollten hier natürlich aufgeführt werden.

Siehe:

ich habe jetzt mal einen Anfang gemacht. Das kann sicher noch ausgebaut werden, und sollte auch besser verlinkt werden. Oefe 22:26, 20. Mai 2008 (CEST)Beantworten

Bitte überprüfe deine Anfänge künftig auch.

Amin Negm-Awad 14:54, 9. Jul. 2008 (CEST)Beantworten

Portable Object Compiler[Quelltext bearbeiten]

Der Beitrag beschreibt nur die gcc-Implementierung von Objective-C, nicht aber den ebenfalls aktuellen und gepflegten Portable Object Compiler (http://users.pandora.be/stes/compiler.html), der im Unterschied zu der beschriebenen Variante u.a. auch Smalltalk-ähnliche Blöcke und Klassenvariablen implementiert.

was sonst noch fehlt[Quelltext bearbeiten]

was mir fehlt ist die beziehung zu C also dem "normalen C" und klarerweise zu c++ auf jeden fall wären stärken und schwächen sinnvoll entweder allgemein oder in bezug auf c/c++ man sollte ja irgendwie abschätzen können in welche n bereich es besser einsetzbar ist als c oder c++ und wo objC seine stärken ausspielen kann

edit; was ich noch vergessen habe die syntax wär interresant und zwar ob das mehr oder minder C& neue syntax für klassen ist oder ob das was ganz neues ist na ja hoffe dass man sowas dann erfährt wär doch interresant

Sicherheit[Quelltext bearbeiten]

Wie sieht es mit der Sicherheit von Programmen aus, die in ObjC geschrieben sind? Wo werden Variablen, Funtionsparameter, Rücksprungadressen abgelegt. Auf dem Stack? Wo landen Objekte (Heap/Datensegment)? Lassen sich Stack- oder Heapüberläufe überhaupt erzeugen und ausnutzen? Wenn ja, wird das irgendwie erkannt, oder liegt es am Programmierer dies zu tun? Gibt es Zeiger/Pointer? Lassen die sich, wie in C, so verdrehen, daß Daten vom Stack als Code verarbeitet werden? Vielleicht sogar ein Vergleich, in Punkto Sicherheit, mit anderen Sprachen (c++, java, c#, delphi). Oder linken auf den entsprechenden Artikel 213.39.142.43 14:03, 25. Sep. 2007 (CEST)Beantworten

Du kannst in ObjC alles machen, was du in C machen kannst. Sowohl im Guten wie im Bösen. Beantwortet das deine Frage? --RokerHRO 16:13, 25. Sep. 2007 (CEST)Beantworten
Ja. 213.39.215.135 17:08, 27. Sep. 2007 (CEST)Beantworten
Man macht das Allerdings nicht so. Wer Zeigerarithmetik in Objective-C benutzt, gehört erschossen. Anders als in C ist das auch nicht notwendig, weil die Anwendungsfälle dafür anders gelöst sind (NSArray vs. C-Array, Klassen mit Zugriffskontrolle statt Structs usw.)
Amin Negm-Awad 11:19, 12. Jul. 2008 (CEST)Beantworten

Überarbeitung von Kategorien[Quelltext bearbeiten]

Leider enthält die Überarbeitung einige Fehler:

»Mit Kategorien kann die Implementierung der Methoden einer Klasse auf mehrere Dateien aufgeteilt werden.« Das ist falsch:

a) Kategorien können zwar auf mehrere Dateien aufgeteilt werden, dies geht aber generell über den PP. Es ist auch nicht zwingend.

b) Kategorien betreffen nicht nur die Implementierung, sondern auch die Deklaration.

»Da Kategorien zur Laufzeit hingefügt werden, können Klassen auch dann erweitert werden, wenn der Sourcecode der ursprünglichen Klasse nicht bereit steht.« Sämtliche Methoden werden einer Klasse zur Laufzeit zugefügt. Das hat nichts mit Kategorien zu tun.

»Somit ist es zum Beispiel auch möglich, eine Klasse wie NSNumber (aus dem OpenStep-Standard) mit einer Methode zu erweitern.«

Es ist vollkommen unerheblich, ob NSNumber eine Klasse aus dem OpenStep-Standard ist. Es hat keinerlei Bedeutung für Kategorien.

»@interface NSNumber (Calculation)«

Die Verwendung des Wortes Addition für Erweiterungen, die nachträglich von anderen vorgenommen wird, ist üblich. Ich weiß nicht, warum es gestrichen wurde.

»«

Die Löschung der Ellipse ist mindestens missverständlich, weil derKommentar jetzt vor dem Return steht und diesen zu beschreiben meint.

»Deklariert man innerhalb einer Kategorie eine Methode mit der gleichen Signatur wie eine bestehende Methode, so wird diese überschrieben«

Dies ist highly deprecated und wird nicht mehr garantiert. Der wirkliche Unterschied zur Ableitung, nämlich die Infektion fremd erzeugter Instanzen, ist gelöscht.

Ich bitte um Erläuterung der Änderung, da ich sie ansonsten rückgängig machen werde.

-- Amin Negm-Awad 23:13, 2. Okt. 2008 (CEST)Beantworten
Ich habe diesen Eintrag übersehen und melde mich deshalb erst jetzt. Was du sagst, leuchtet ein. Ich habe nichts gegen den Revert. Überarbeitet gehört der Abschnitt aber trotzdem:
  • Begriffe wie „Infektion“ oder „einimpfen“ sollte man in diesem Zusammenhang vermeiden. :* Der Stil des Abschnitts ist zu flaspig. „Sofort einsichtig“ ist gar nichts, „extrem praktisch“ die falsche Wortwahl und die Wir-Form sollte schon gar nicht sein.
  • (CalculationAddition)“ sagt doppelt, was „(Calculation)“ allein auch ausdrückt. Aber das ist eine Kleinigkeit.
  • Dein Coding-Stil (Platzierung der Klammern) verträgt sich nicht mit dem Rest des Artikels. --Dagobert Drache 16:19, 7. Okt. 2008 (CEST)Beantworten
Oki, doki, hier noch kurz meine Anmerkungen:
Revert
Ja, da war ich wohl zu schnell.
Begrifflichkeiten
Schau ich mir an.
"Addition"
Das verstehe ich nicht. Calculation bezeichnet die Thematik. Mit Addition versieht man häufig eigene Erweiterung.
Coding-Stil
Das ist erstaunlich, weil der Artikel auf einen Artikel von mir in einer andere Wiki zurückgeht, siehe oben. ;-) Ich nehme an, dass du die Platzierung der Klammern bei einem Methodenblock meinst.
Aber in der Tat habe ich da etwas geändert, um es an Apple anzupassen. (Apple macht das aber auch nicht einheitlich …) Daher bin ich grundsätzlich der Meinung, dass man es so wie jetzt machen sollte. Es sollte also eher der restliche Artikel geändert werden. (Was nicht dramatisch viel ist.)
Amin Negm-Awad 14:24, 9. Okt. 2008 (CEST)Beantworten

Abschnitt Syntax[Quelltext bearbeiten]

Einer der Design-Gedanken von Objective-C war es, die Flexibilität von Smalltalk anzunähern, jedoch auf das zu verzichten, was das Laufzeitverhalten verschlechtern könnte. Der offensichtlichste Verzicht gegenüber Smalltalk ist das Fehlen von Blöcken. Daher ist ein Objective-C-Programm bereits zur Übersetzungszeit vollständig compilierbar

warum genau sollte das vorhandensein von blöcken es verhindern, daß objective-c-code "zur Übersetzungszeit vollständig compilierbar" ist? und was ist überhaupt mit "vollständig" gemeint? -- 02:26, 23. Mai 2009 (CEST)Beantworten
Weil Blöcke im Sinne von Smalltalk "texte" sind, die noch verändert werden können und daher später kompiliert (oder freilich interpretiert) werden müssen. Dies lässt Objective-C nicht zu.
Amin Negm-Awad 15:08, 17. Jun. 2009 (CEST)Beantworten
Ja, der gesamte Abschnitt "Syntax" ist in Vergleich zum Vorhergehenden qualitativ unterlegen. Ich habe mal ein "Überarbeiten" eingefügt. -- Global667 02:34, 23. Mai 2009 (CEST)Beantworten
Das war schon vom Aufbau her völlig durcheinander geraten. Ich habe mal ein bisschen aufgeräumt. Die hier angesprochene Frage hat übrigens wenig mit der Syntax zu tun.
Amin Negm-Awad 15:08, 17. Jun. 2009 (CEST)Beantworten

Vergleich zu Java[Quelltext bearbeiten]

klingt ja alles ganz doll hier... im vergleich zu C oder C++, dennoch denke ich dass der verglaich zu Java eher vernichtend ausfallen wird.. und ueberhaupt ist Steven Jobs nicht wirklich ein Informatiker (nicht signierter Beitrag von 81.159.223.164 (Diskussion | Beiträge) 03:14, 2. Mai 2010 (CEST)) Beantworten

Ja, vernichtend für Java... Ich weiss es, da ich seit 11 Jahren Java entwickle, und erst seit einem halben Jahr Objective C. Sollten wir solche Bashing-Kommentare nicht löschen? Sind doch nicht Zielführend, oder? --Christoph73 10:58, 18. Mai 2010 (CEST)Beantworten

Dynamisches Binden[Quelltext bearbeiten]

Eine Frage: Taugt ein NSDictonary als Beispiel für spätes/dynamisches Binden? NSDictonary ist ein Datentyp (aka assoziativer Array), den man sich auch in Sprachen wie C oder Pascal bauen kann. Ich lasse mich gern eines besseren belehren. -- Global667 22:17, 24. Jan. 2011 (CET)Beantworten

Geschichte / Einsatzbereiche und Bedeutung[Quelltext bearbeiten]

Der Artikel geht einerseits sehr detailliert auf technische Details der Sprache ein. Was ich andererseits vermisse, sind neben einer etwas ausführlicheren Entwicklungsgeschichte ein Abschnitt zur Verbreitung und Bedeutung der Sprache. Ist es nicht z.B. so, dass die Apps für iPhone und iPad mit Objective-C erstellt werden? --Toa7d6 17:17, 9. Jun. 2011 (CEST)Beantworten

Dem schließe ich mich an; auch ich vermisse Angaben zu Verbreitung und Bedeutung und wärre dankbar, wenn dies jemand ergänzen könnte. (nicht signierter Beitrag von 141.77.225.60 (Diskussion) 12:01, 10. Aug. 2011 (CEST)) Beantworten

Zuviele Codebeispiele[Quelltext bearbeiten]

Ich seh den Artikel vor lauter Code nicht. Ich finde, man sollte sich an den Seiten für C bzw. C++ orientieren, die wirklich lexikonartig die Sprachen beschreiben. Hier wird dagegen mit lauter Codebeispielen um sich geworfen, die einem nicht weiterhelfen und ein flüssiges Lesen des Artikels verhindern. (nicht signierter Beitrag von 95.114.60.145 (Diskussion) 11:58, 30. Sep. 2011 (CEST)) Beantworten

Massive Kürzungen von Zehdeh[Quelltext bearbeiten]

Könnte sich jemand, der etwas mehr mit dem Artikel beschäftigt ist, mal die massiven Kürzungen und Änderungen von Benutzer Zehdeh ansehen? Es stimmt zwar, dass WP kein Tutorial ist, jedoch veranschaulichen ein paar passende Code-Beispiele die Abschnitte meist viel besser, als es Unmengen an Fließtext können. Ich bin daher dafür, die Beispiele wieder aufzunehmen. --net (Diskussion) 09:58, 17. Apr. 2012 (CEST)Beantworten

Ich möchte dem zustimmen. Speziell unter dem Aspekt, dass die Qualität des heutigen(2014) Fliesstextes nicht ultrahoch ist. Mein Lieblingssatz:"Zu diesem Zweck führt Objective-C zur Laufzeit umfangreiche Informationen über ein Objekt mit, was über RTTI hinausgeht." Diese "mehr als"-Formulierung setzt voraus, dass RTTI bekannt ist und verrät ausserdem nicht, welche zusätzlich Informationen in Objective-C nun tatsächlich "mitgeführt" werden. Statt Fragen zu beantworten, wirft der Satz neue Fragen auf. Von einem enzyklopädischen Artikel erwarte ich das Gegenteil. Fahnder99 (Diskussion) 10:39, 17. Okt. 2014 (CEST)Beantworten

Klassenobjekte[Quelltext bearbeiten]

"Klassenobjekte können jedoch keine Member-Variablen enthalten und sind stets Singletons." Ist keine korrekte Aussage. Singleton-Pattern ist nicht in Objective-C integriert und Klassenobjekte können auf keine Instanzvariablen zugreifen, enthalten empfinde ich hier als etwas schwammig formuliert. --Dennis Mende (Diskussion) 12:21, 18. Apr. 2013 (CEST)Beantworten

Ich glaube, Du missverstehst: MMN meint der Autor, dass eine Klasse kann keine eigenen Klassen-Variablen haben kann. Das muss man dann mit globalen Variablen (file-statics o.Ä.) simulieren. Also z.B. wenn man ein Singleton-Pattern implementiert, könnte man ja in C++ eine 'static' Instanzvariable deklarieren, um das eine Objekt zu enthalten. In ObjC gibt es das nicht. Und tatsächlich können Klassenmethoden auf Instanzvariablen zugreifen, schreib einfach mal eine Klassenmethode, wie
+(id) newFoo
 {
    Foo* theFoo = [[Foo alloc] init];
    theFoo->ivar = 15;
    return theFoo;
 }

Das funktioniert, also wäre Deine Formulierung auch schwammig. Ich würde halt statt "Instanzvariable" "Klassenvariable sagen. -- Uliwitness (Diskussion) 12:52, 19. Nov. 2013 (CET)Beantworten

Dynamisch-Statisch, Stark-Schwach[Quelltext bearbeiten]

Nachdem Hin- und Hereditiererei ja nun keine Lösung ist, ab in die Diskussion:

@NetSpy: Wenn du das aus C ableitest, dann bitte aber auch dem stark noch ein schwach hinzufügen. Denn C typisiert vergleichsweise schwach. Dann steht da: "Typisierung Dynamisch, statisch, stark, schwach" Also nur unnützes Zeugs.

Die überragende Mehrheit wird sich für die Typisierung von (Objective-C-)Objekten interessieren. Und die ist dynamisch-stark. Amin Negm-Awad (Diskussion) 18:39, 10. Sep. 2013 (CEST)Beantworten

Können wir machen aber ich würde dann eher vorschlagen, dass wir „stark“ rausnehmen und nur „dynamisch, explizit, statisch“ schreiben. Statisch ist aber schon wichtig, da man auch als Objective C Entwickler immer mal wieder mit C Code zu tun hat. --net (Diskussion) 11:57, 11. Sep. 2013 (CEST)Beantworten
Dort steht auch noch was von "Typfreiheit" - wer soll das noch verstehen? Fahnder99 (Diskussion) 10:45, 17. Okt. 2014 (CEST)Beantworten

Objective-C++ Abschnitt hat fehler/veraltete Stellen[Quelltext bearbeiten]

Hat jemand eine Quelle für die Aussage, dass C++-Objekte mit virtuellen Methoden problematisch sein sollen als Instanzvariablen in Objective-C-Objekten? Das ist doch schon ewig (10.3?) gelöst, seit ObjC die Konstruktoren aufruft? Außerdem ist das Problem mit nicht aufgerufenen Destruktoren bei ObjC-Exceptions nur unter Mac 32-Bit ein Problem. Unter der "modern runtime" (iOS und 64-Bit) sind das ja C++-Exceptions, funktioniert also. -- Uliwitness (Diskussion) 12:14, 19. Nov. 2013 (CET)Beantworten

Habe jetzt mal die Exception-Sache korrigiert. Hat jemand etwas dagegen, wenn ich das mit den virtuellen Methoden auch einmal lösche? Oder hat jemand eine Erklärung, was das sein sollte? -- Uliwitness (Diskussion) 12:47, 19. Nov. 2013 (CET)Beantworten

Lizenz?[Quelltext bearbeiten]

Unter welcher Lizenz steht Obj-C eigentlich? Gehört es Brad Cox, Next, Apple? Steht es unter irgendeiner GPL? Open Source? Proprietär? (nicht signierter Beitrag von 78.34.98.34 (Diskussion) 15:09, 22. Okt. 2016 (CEST))Beantworten