Frage

Für Beispiel, http://developer.apple.com/cocoa/pyobjc.html ist immer noch für OS X 10.4 Tiger, 10.5 Leopard nicht..Und das ist die offizielle Apple-Dokumentation für es..

Die offizielle PyObjC-Seite ist gleich schlecht, http://pyobjc.sourceforge.net/

Es ist so schlimm, es ist verwirrend..Ich überlege mir lernen Ruby-in Erster Linie, weil die RubyCocoa Zeug ist so viel besser dokumentiert, und es gibt viele anständige tutorials (http://www.rubycocoa.com/ für Beispiel), und wegen der Schuhe GUI-toolkit..

Auch dieser schlecht-auto-übersetzt japanischen tutorial nützlicher ist als der rest der Dokumentation, die ich finden konnte..

Alles was ich will zu tun ist erstellen Sie ziemlich einfaches Python-Anwendungen mit dem Cocoa-GUI ' s..
Kann jemand werfen Licht auf die schreckliche Dokumentation, oder zeigen Sie mir einige tutorials, die geben Ihnen nicht nur die riesigen Blöcke von code und nehme an, Sie wissen, was NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None) macht..?

War es hilfreich?

Lösung

Ich bin damit einverstanden, dass das tutorial ist fehlerhaft, werfen zufällige, nicht erklärbare code direkt vor Ihren Augen.Es stellt Konzepte wie die autorelease-pool und die Benutzer-Standardeinstellungen, ohne zu erklären, warum Sie würde wollen, dass Sie ("Autorelease-pool für memory management" ist kaum eine Erklärung).

Sagte, dass...

im Grunde alles, was ich will zu tun ist, schreiben Cocoa-Anwendungen, ohne zu lernen ObjC.

Ich fürchte, dass für die Zeit, die Sie wird brauchen ein grundlegendes Verständnis von ObjC, um nutzen aus jeder Sprache verwendet Kakao.PyObjC, RubyCocoa, Nu und andere Nischen am besten, und alle von Ihnen wurden vom Menschen eng vertraut mit den ins und outs von ObjC und Kakao.

Für jetzt, profitieren Sie am meisten, wenn Sie realistisch sehen, dass diese Brücken als nützlich, in denen Skriptsprachen wirklich glänzen, anstatt zu versuchen zu bauen eine gesamte Anwendung mit Ihnen.Während dieser hat getan worden (mit LimeChat, ich bin mit einem RubyCocoa-schriftliche app jetzt), es ist selten und wird wahrscheinlich für eine Weile.

Andere Tipps

Der Hauptgrund für den Mangel an Dokumentation für PyObjC ist, dass es ein Entwickler (ich), und da die meisten Entwickler, die ich nicht besonders mag, eine Dokumentation zu schreiben.Weil PyObjC ist ein side-Projekt für mich, ich neigen dazu, sich auf die Arbeit an features und bugfixes, weil das für mich interessant.

Der beste Weg, um die Dokumentation zu verbessern, ist, um freiwillig zu helfen, auf die pyobjc-dev-mailing-Liste.

Als ein beiseite:die pythonmac-sig-Mailingliste (siehe google) ist eine hervorragende Ressource um Hilfe zu Python auf Mac OS x (nicht nur PyObjC).

Um ehrlich zu sein:

Wenn Sie wollen, um eine effektive Cocoa-Programmierer sind, müssen Sie lernen Objective-C.Ende der Geschichte.

Weder Python oder Ruby sind ein Ersatz für Objective-C über die jeweiligen Brücken.Haben Sie immer noch zu verstehen, die Objective-C-APIs, die Verhaltensweisen innewohnt NSObject abgeleiteten Klassen, und viele andere details mit Kakao.

PyObjC und RubyCocoa sind eine großartige Möglichkeit, um Zugriff auf Python-oder Ruby-Funktionen aus einer Cocoa-Anwendung, einschließlich Aufbau einer Cocoa-Anwendung, die meistens-wenn auch nicht ganz -- in Python-oder Ruby.Aber der Erfolg darin begründet, ist ein gründliches Verständnis von Cocoa und Objective-C-APIs ist es aus.

Toms und Martins Antwort sind auf jeden Fall wahr ist (in fast jedem open-source-Projekt, werden Sie feststellen, dass die meisten Beiträge sind besonders daran interessiert, gut, Entwicklung;nicht so sehr in semi-bezogene Themen wie Dokumentation), aber ich glaube nicht, Ihre Frage am Ende gut passen würde, innerhalb PyObjC-Dokumentation.

NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None)

NSThread ist ein Teil der Cocoa-API, und als solche dokumentiert über bei Apple, einschließlich der besonderen Methode + detachNewThreadSelector:toTarget:withObject: (Ich würde link gibt, aber anscheinend stackoverflow-Fehler bei Analyse der it).Die CocoaDev wiki hat auch einen Artikel.

Ich glaube nicht, es wäre eine gute Idee für PyObjC, um zu versuchen zu dokumentieren, Kakao, außer ein paar grundlegende Beispiele dafür, wie Sie es von Python.Erklären Selektoren ist auch wahrscheinlich außerhalb der Umfang von PyObjC, als auch jene, ein feature von Objective-C, nicht PyObjC speziell.

Ich stolperte über ein gutes tutorial auf PyObjC/Kakao:

http://lethain.com/entry/2008/aug/22/an-epic-introduction-to-pyobjc-and-cocoa/

Alles was ich will zu tun ist erstellen Sie ziemlich einfaches Python-Anwendungen mit dem Cocoa-GUI ' s..Kann jemand werfen Licht auf die schreckliche Dokumentation, oder zeigen Sie mir einige tutorials, die geben Ihnen nicht nur die riesigen Blöcke von code und nehme an, Sie wissen, was NSThread.detachNewThreadSelector_toTarget_withobject_("queryController", self, None) macht..?

[...]

im Grunde alles, was ich will zu tun ist, schreiben Cocoa-Anwendungen, ohne zu lernen ObjC.

Obwohl ich grundsätzlich einverstanden mit Soeren Antwort, ich würde es sogar noch weiter:

Es wird eine lange Zeit, wenn überhaupt, bevor Sie Sie verwenden können, Kakao, ohne ein gewisses Verständnis von Objective C.Kakao ist nicht eine Abstraktion, die gebaut unabhängig von Objective-C, es ist explizit an Sie gebunden.Sie können sehen, dass dies im Beispiel Zeile code, die du oben zitiert:

NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None) 

Dies ist die Python-Art des Schreibens, die Objective C-Linie:

[NSThread detachNewThreadSelector:@selector(queryController:) toTarget:self withObject:nil];

Nun, es ist wichtig, hier zu bemerken, dass diese Linie kann gesehen werden in zwei Möglichkeiten:(1) wie eine Zeile Objective-C, oder (2) die Anrufung des Cocoa-frameworks.Wir sehen es als (1) durch die syntax.Wir sehen es als (2), indem man erkennt, dass NSThread ist ein Cocoa-framework bietet eine Reihe von praktischen Funktionen.In diesem Fall, diesem besonderen Cocoa-framework macht es einfach für uns, ein Objekt, beginnen, etwas zu tun auf einem neuen thread.

Aber der Clou ist:Cocoa-framework hier (NSThread) stellt uns diese praktischen Dienst in einer Weise, die ausdrücklich an die Sprache, das framework ist in der Programmiersprache.Nämlich, NSThread gab uns eine Funktion, bezieht sich explizit auf "Selektoren".Selektoren sind, in der Tat, der name für etwas grundlegendes darüber, wie Objective C funktioniert.

So gibt es die rub.Kakao ist grundsätzlich ein Objective-C-Schöpfung, und seine Schöpfer haben es gebaut hat, mit Objective-C in mind.Ich bin nicht behaupten, dass es unmöglich ist, die übersetzung der Benutzeroberfläche der Kakao-Funktionen in eine form, die natürlich für die anderen Sprachen.Es ist nur so, dass, sobald Sie ändern Sie das Cocoa-framework zu stoppen, die sich auf "Selektoren", es ist nicht wirklich das Cocoa-framework mehr.Es ist eine übersetzte version.Und sobald Sie beginnen, Sie gehen nach unten, dass die Straße, ich bin zu raten, die Dinge wirklich chaotisch.Sie versuchen zu halten up mit Apple-wie Sie aktualisieren Kakao, vielleicht triffst du einige Teile der Kakao, die einfach nicht gut übersetzen in die neue Sprache, was auch immer.Anstatt also, Dinge wie PyObjC opt aussetzen Kakao direkt, in einer Weise, dass hat eine sehr klare und einfache Korrelation.Wie Sie sagen in der Dokumentation:

Um eine verlustfreie und eindeutige übersetzung zwischen Ziel-C-Nachrichten und Python-Methoden, die Python-Methode, die dem Namen entspricht, ist einfach den Selektor Doppelpunkte durch Unterstriche ersetzt.

Sicher, es ist ein bisschen hässlich, und es bedeutet, dass Sie benötigen, zu wissen, etwas über Objective-C, aber das ist, weil die alternative, wenn man wirklich existiert, ist nicht unbedingt besser.

Ich wusste nicht, überhaupt etwas über Objective-C oder Cocoa (aber viel über Python), aber das Schreibe ich jetzt eine ziemlich komplexe Anwendung in PyObjc.Wie habe ich gelernt?Ich nahm Cocoa-Programmierung für OSX und ging durch das ganze Buch (ein ziemlich schneller Prozess,) mittels PyObjC.Ignorieren Sie alles über die memory-management und Sie werden ziemlich viel in Ordnung sein.Der einzige VORBEHALT ist, dass nur sehr gelegentlich müssen Sie einen Dekorateur wie endSheetMethod (eigentlich denke ich, das ist der einzige, den ich getroffen habe):

@PyObjcTools.AppHelper.endSheetMethod
def alertEnded_code_context_(self, alert, choice, context):
    pass

Diese Antwort ist nicht sehr hilfreich zu sein, aber als Entwickler, ich hasse es zu tun Dokumentation.Dies ist ein opensource-Projekt, es ist schwer, Menschen zu finden, tun Dokumentation.

Tom sagt alles wirklich.Viele open source-Projekte haben Entwickler und wenige, die daran interessiert sind, zu dokumentieren.Es ist nicht durch die Tatsache geholfen, dass die Torpfosten verschieben kann auf einer täglichen basis, was bedeutet, dass die Dokumentation nicht nur erstellt werden, aber gepflegt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top