Domanda

Per esempio, http://developer.apple.com/cocoa/pyobjc.html è ancora per OS X 10.4 Tiger, non 10.5 Leopard..E che la documentazione ufficiale di Apple per questo..

Ufficiale PyObjC pagina è altrettanto male, http://pyobjc.sourceforge.net/

È così male, è sconcertante..Sto pensando di Ruby, principalmente perché la RubyCocoa roba è molto meglio documentato, e c'è un sacco di tutorial decente (http://www.rubycocoa.com/ per esempio), e a causa delle Scarpe GUI toolkit..

Anche questo male-auto-tradotto in Giapponese tutorial è più utile rispetto al resto della documentazione che ho potuto trovare..

Tutto quello che voglio fare è creare abbastanza semplici applicazioni Python con Cacao GUI..
Qualcuno può far luce sulla terribile documentazione, o punto me in alcuni tutorial che non solo vi darà enormi blocchi di codice e si supponga di sapere che cosa NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None) ..da dove viene?

È stato utile?

Soluzione

Sono d'accordo che il tutorial è imperfetto, il lancio casuale, inspiegabile codice proprio davanti ai vostri occhi.Introduce concetti come l'autorelease pool e delle impostazioni predefinite dell'utente senza spiegare perché vuoi ("Autorelease pool per la gestione della memoria" non è certo una spiegazione).

Detto questo...

fondamentalmente tutto quello che voglio fare è scrivere Cacao applicazioni senza dover imparare ObjC.

Ho paura che, per ora, è sarà bisogno di una conoscenza di base dei ObjC, per poter beneficiare di un qualsiasi linguaggio che usa il Cacao.PyObjC, RubyCocoa, Nu e altri sono nicchie al meglio, e tutti loro sono stati sviluppati da persone intimamente familiare con l'ins e outs del ObjC e Il cacao.

Per ora, si andrà a beneficio di più se realisticamente vedere quei ponti utili dove i linguaggi di scripting davvero brillare, piuttosto che cercare di costruire un'intera applicazione con loro.Mentre questo ha è stato fatto (con LimeChat, io sto usando un RubyCocoa-scritto app, per ora), è raro e probabilmente sarà per un po'.

Altri suggerimenti

La ragione principale per la mancanza di documentazione per PyObjC è che c'è uno sviluppatore (me), e come la maggior parte degli sviluppatori non mi piace particolarmente la scrittura di documentazione.Perché PyObjC progetto fa parte di me, io tendono a concentrarsi sul lavoro di funzionalità e correzioni di bug, perché è più interessante per me.

Il modo migliore per migliorare la documentazione di volontariato per aiutare il pyobjc-dev mailing list.

Come una parentesi:il pythonmac-sig mailinglist (vedi su google) è un eccellente risorsa per ottenere aiuto su Python su MacOSX (e non solo PyObjC).

Per essere schietto:

Se vuoi essere un efficace Cacao programmatore, è necessario imparare Objective-C.Fine della storia.

Né Python o Ruby sono un sostituto per Objective-C, tramite i loro rispettivi ponti.Ancora dovete capire Objective-C, le Api, i comportamenti inerenti a NSObject classi derivate, e molti altri dettagli di Cacao.

PyObjC e RubyCocoa sono un ottimo modo per accedere Python o Ruby la funzionalità di una applicazione Cocoa, tra cui la costruzione di una applicazione Cocoa per lo più, se non del tutto -- in Python o Ruby.Ma il successo in esso si fonda su una conoscenza approfondita di Cacao e Objective-C, le Api di cui è composta.

Tom e Martin risposta sono sicuramente vero (in qualsiasi progetto open source, troverete che la maggior parte dei collaboratori sono particolarmente interessato, beh, in via di sviluppo;non tanto in semi-di questioni connesse, come la documentazione), ma non credo che la tua domanda alla fine sarebbe adatta bene all'interno di PyObjC documentazione.

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

NSThread è parte del Cacao, API, e come tale documentati su Apple, tra cui il particolare metodo di + detachNewThreadSelector:toTarget:withObject: (Avevo link c'è, ma a quanto pare stackoverflow ha bug con l'analisi di esso).Il CocoaDev wiki ha anche un articolo.

Non credo che sarebbe una buona idea per PyObjC per tentare di documento di Cacao, tranne un paio di esempi di base di come utilizzare all'interno di Python.Spiegando selettori, è anche probabile che al di fuori dell'ambito di PyObjC, come quelli, troppo, sono una caratteristica di Objective-C, non PyObjC in particolare.

Mi sono imbattuto in un buon tutorial su PyObjC/Cacao:

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

Tutto quello che voglio fare è creare abbastanza semplici applicazioni Python con Cacao GUI..Qualcuno può far luce sulla terribile documentazione, o punto me in alcuni tutorial che non solo vi darà enormi blocchi di codice e si supponga di sapere che cosa NSThread.detachNewThreadSelector_toTarget_withobject_("queryController", "sé", Nessuno)..da dove viene?

[...]

fondamentalmente tutto quello che voglio fare è scrivere Cacao applicazioni senza dover imparare ObjC.

Anche se sono sostanzialmente d'accordo con Soeren risposta, vorrei prendere ancora di più:

Sarà un lungo periodo di tempo, se mai, prima di poter utilizzare il Cacao senza una certa conoscenza di Objective C.Il cacao non è un'astrazione costruita in modo indipendente dall'Obiettivo C, è esplicitamente legata ad esso.Come si può vedere la riga di codice di esempio che hai citato sopra:

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

Questo è il Python modo di scrivere l'Obiettivo C linea:

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

Ora, è importante notare che questa linea può essere visto in due modi:(1) come una linea di Objective C, o (2) come un'invocazione di Cacao quadri.Vediamo come (1) la sintassi.Vediamo come (2), riconoscendo che NSThread è un framework Cocoa, che fornisce una serie di funzioni utili.In questo caso, in questo particolare framework Cocoa sta rendendo più facile per noi di avere un oggetto di iniziare a fare qualcosa in un nuovo thread.

Ma il calciatore è questo:Il framework Cocoa qui (NSThread) è di fornire noi con questo pratico servizio in un modo che è esplicitamente legata al linguaggio il quadro è stato scritto.Cioè, NSThread ci ha dato una caratteristica che fa esplicito riferimento a "selettori".I selettori sono, in punto di fatto, il nome di qualcosa di fondamentale su come Obiettivo C funziona.

Così c'è il rub.Il cacao è fondamentalmente un Obiettivo-C creato, e i suoi creatori hanno costruito con Objective C in mente.Non sto sostenendo che è impossibile tradurre l'interfaccia al Cacao caratteristiche in una forma più naturale per le altre lingue.È solo che non appena si modifica il framework Cocoa per interrompere riferimento a "selettori", non è davvero il framework Cocoa più.È una versione tradotta.E una volta che si inizia ad andare fino in fondo la strada, sto cercando di indovinare le cose si fanno davvero disordinato.Si sta cercando di tenere il passo con Apple come aggiornare il Cacao, forse si ha colpito alcune parti del Cacao, che non traducono bene in una nuova lingua, a prescindere.Così, invece, le cose come PyObjC optare per esporre il Cacao direttamente, in un modo che è molto chiaro e semplice correlazione.Come si dice nella documentazione:

Per avere un lossless e inequivocabile di traduzione tra Objective-C i messaggi e Python metodi, Python nome del metodo equivalente è semplicemente il selettore con due punti sostituiti da caratteri di sottolineatura.

Certo, è un po ' brutto, e questo significa che avete bisogno di sapere qualcosa su Objective-C, ma perché l'alternativa, se esiste veramente, non è necessariamente migliore.

Non sapevo assolutamente nulla di Objective C o Cacao (ma un sacco su Python), ma ora sto scrivendo un insieme piuttosto complesso di applicazione in PyObjc.Come ho fatto a imparare?Ho preso Cacao Programmazione per OSX e siamo andati attraverso tutto il libro (un bel processo rapido) utilizzando PyObjC.Basta ignorare nulla circa la gestione della memoria e avrai abbastanza molto bene.L'unica avvertenza è che in alcuni casi è necessario utilizzare un decoratore come endSheetMethod (in realtà penso che l'unico che non l'ho trovata):

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

Questa risposta non sta andando essere molto utile, ma, come sviluppatore odio facendo documentazione.Questo essendo un progetto opensource, è difficile trovare gente per fare la documentazione.

Tom dice che è tutto davvero.Un sacco di progetti open source hanno dedicato agli sviluppatori e i pochi che sono interessati a documentare.Non è aiutato dal fatto che i pali in grado di spostare su una base quotidiana, il che significa che la documentazione non solo deve essere creato, ma mantenuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top