Vra

Byvoorbeeld, http://developer.apple.com/cocoa/pyobjc.html is nog steeds vir OS X 10.4 Tiger, nie 10.5 Luiperd..En dit is die amptelike Apple dokumentasie vir dit..

Die amptelike PyObjC bladsy is ewe sleg, http://pyobjc.sourceforge.net/

Dit is so erg dat dit se verstommende..Ek is die oorweging van die leer van Ruby hoofsaaklik omdat die RubyCocoa dinge is soveel beter gedokumenteer, en daar is baie van die goeie tutoriale (http://www.rubycocoa.com/ byvoorbeeld), en as gevolg van die Skoene GUI toolkit..

Selfs hierdie erg-outomaties-vertaal Japanese handleiding is meer nuttig is as die res van die dokumentasie wat ek kon vind..

Al wat ek wil doen, is die skep van'n redelik eenvoudige Python aansoeke met Kakao GUI se..
Is daar iemand wat kan lig werp op die verskriklike dokumentasie, of wys my op'n paar tutoriale wat nie net gee jou'n groot blokke van die kode en aanneem dat jy weet wat NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None) doen..?

Was dit nuttig?

Oplossing

Ek stem saam dat dit handleiding is gebrekkig, gooi ewekansige, onverklaarbare kode reg in die voorkant van jou oë. Dit stel konsepte soos die autorelease swembad en gebruikers standaard sonder om te verduidelik hoekom jy dit wil hê ( "Autorelease swembad vir geheuebestuur" is skaars 'n verduideliking).

Dit gesê ...

  

basies al wat ek wil doen, is skryf Cacao aansoeke sonder om te leer ObjC.

Ek is bevrees dat vir die oomblik, jy sal moet 'n basiese begrip van ObjC om voordeel te trek uit enige taal wat Cacao gebruik. PyObjC, RubyCocoa, Nu en ander plekkies op sy beste, en almal van hulle is ontwikkel deur mense intiem vertroud is met die ins en outs van ObjC en Cocoa.

Vir nou, jy sal die meeste baat vind as jy realisties dié brûe te sien as nuttig waar script tale werklik skyn, eerder as om te probeer om 'n hele program met hulle te bou. Terwyl hierdie het is gedoen (met LimeChat, ek gebruik 'n RubyCocoa geskryf artikels nou), dit is skaars en waarskynlik sal wees vir 'n rukkie.

Ander wenke

Die hoofrede vir die gebrek aan dokumentasie vir PyObjC is dat daar 'n ontwikkelaar (my), en soos die meeste ontwikkelaars ek doen nie veral soos die skryf van dokumentasie. Omdat PyObjC is 'n side-projek vir my ek is geneig om te fokus op werk op funksies en bugfixes, want dit is meer interessant vir my.

Die beste manier om die dokumentasie te verbeter is om vrywillig te help op die pyobjc-dev poslys.

As 'n eenkant:. Die pythonmac-sig poslys (sien google) is 'n uitstekende bron vir die kry hulp op Python op MacOSX (nie net PyObjC)

Om stomp geword het:

As jy wil om 'n doeltreffende kakao programmeerder wees, jy moet Objective-C te leer. Einde van die storie.

Nie een Python of Ruby is 'n plaasvervanger vir Objective-C deur middel van hul onderskeie brûe. Jy moet nog die Objective-C API verstaan, die gedrag wat inherent is aan NSObject afgelei klasse, en baie ander besonderhede van kakao.

PyObjC en RubyCocoa is 'n goeie manier om toegang te verkry Python of Ruby funksie van 'n Cacao aansoek, insluitende die bou van 'n Cacao aansoek meestal - indien nie geheel en al - in Python of Ruby. Maar sukses daarin berus op 'n deeglike begrip van kakao en die Objective-C API dit is saamgestel uit.

reaksie Tom en Martin se is beslis ware (in net oor 'n open source projek, sal jy vind dat die meeste bydraers is veral geïnteresseerd in, wel, die ontwikkeling , nie soseer in semi-aangeleenthede soos dokumentasie), maar ek dink nie jou spesifieke vraag aan die einde sal goed pas binne PyObjC dokumentasie.

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

NSThread is deel van die Cocoa API, en as sodanig gedokumenteer oor by Apple , insluitend die spesifieke metode + detachNewThreadSelector:toTarget:withObject: (Ek sal daar 'n skakel, maar blykbaar StackOverflow het foute met die ontleding van dit). Die CocoaDev wiki het ook 'n artikel .

Ek dink nie dit sal 'n goeie idee wees vir PyObjC om te probeer om kakao, behalwe 'n paar basiese voorbeelde van hoe om dit te gebruik binne Python dokumenteer. Verduidelik keurders is ook geneig om buite die omvang van PyObjC, as diegene Ook is 'n kenmerk van Objective-C, nie PyObjC spesifiek.

Al wat ek wil doen, is die skep van'n redelik eenvoudige Python aansoeke met Kakao GUI se..Is daar iemand wat kan lig werp op die verskriklike dokumentasie, of wys my op'n paar tutoriale wat nie net gee jou'n groot blokke van die kode en aanneem dat jy weet wat NSThread.detachNewThreadSelector_toTarget_withobject_("queryController", die self, nie Een nie..?

[...]

basies al wat ek wil doen, is skryf Kakao aansoeke sonder om te leer ObjC.

Hoewel ek eintlik saamstem met Soeren se reaksie, wil ek neem dit selfs verder:

Dit sal'n lang tyd, indien ooit, voor jy kan gebruik Kakao sonder'n begrip van die Doel C.Kakao is nie'n abstraksie gebou onafhanklik van Objektiewe C, dit is uitdruklik gekoppel is aan dit.Jy kan sien dit in die voorbeeld lyn van die kode wat jy hierbo aangehaal:

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

Hierdie is die Python manier van die skryf van die Doel C line:

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

Nou, dit is belangrik om op te let hier is dat hierdie lyn kan gesien word in twee maniere:(1) as'n lyn van Objektiewe C, of (2) as'n aanroeping van die Kakao raamwerke.Ons sien dit as (1) deur die sintaksis.Ons sien dit as (2) deur die erkenning dat NSThread is'n Kakao-raamwerk wat voorsiening maak'n stel van die handige funksies.In hierdie geval, hierdie spesifieke Kakao raamwerk is maak dit maklik vir ons om te het'n voorwerp begin om iets te doen op'n nuwe draad.

Maar die skopper is dit:Die Kakao raamwerk hier (NSThread) is die verskaffing van ons hierdie handige diens in'n manier wat uitdruklik gekoppel aan die taal van die raamwerk is geskryf in.Naamlik, NSThread het ons'n funksie wat uitdruklik verwys na die "keurders".Keurders is, in die punt van die feit, die naam vir iets fundamentele oor hoe Objektiewe C werke.

So daar is die vryf.Kakao is fundamenteel'n Doel-C skepping, en sy skeppers gebou het dit met'n Doel C in gedagte.Ek is nie beweer dat dit onmoontlik is om te vertaal die koppelvlak tot die Kakao funksies in'n vorm meer natuurlike vir ander tale.Dit is net dat so gou as jy verander die Kakao raamwerk te stop verwys na die "keurders", dit is nie regtig die Kakao raamwerk enige meer.Dit is'n vertaalde weergawe.En sodra jy begin om af te gaan dat die pad, ek vermoed dinge regtig slordig.Jy probeer om tred te hou met Apple as hulle werk Kakao, miskien het jy getref'n paar dele van Kakao wat net nie vertaal in die nuwe taal, wat ook al.So in plaas, dinge soos PyObjC kies bloot te stel Kakao direk, in'n manier wat het'n baie duidelike en eenvoudige korrelasie.Soos hulle sê in die dokumentasie:

Ten einde'n lossless en ondubbelsinnig vertaling tussen Doel-C-boodskappe en Python metodes, die Python metode naam ekwivalent is eenvoudig die selector met dubbelpunte vervang deur onderstreping.

Seker, dit is'n bietjie lelik, en dit beteken dat jy nodig het om te weet iets oor die Doel-C, maar dit is omdat die alternatief, as'n mens werklik bestaan, is nie noodwendig beter nie.

Ek het niks teen alles oor doelstelling C of kakao (maar baie oor Python) weet, maar ek is nou skryf 'n taamlik ingewikkelde aansoek in PyObjc. Hoe het ek leer? Ek opgetel Cacao Programmering vir OSX getrek en deur die hele boek ( 'n redelik vinnige proses) met behulp van PyObjC. Net ignoreer niks oor geheuebestuur en jy sal pretty much goed wees. Die enigste nadeel is dat baie van tyd tot tyd moet jy 'n versierder soos endSheetMethod gebruik (eintlik ek dink dit is die enigste een wat ek het getref):

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

Hierdie antwoord is nie van plan baie behulpsaam te wees, maar as 'n ontwikkelaar Ek haat doen dokumentasie. Dit is 'n oopbron projek, is dit moeilik om mense te dokumentasie doen kry.

Tom sê dit alles werklik. Baie van die open source projekte het toegewyde ontwikkelaars en 'n paar wat belangstel in dokumentering is. Dit is nie aangehelp deur die feit dat doelpale kan skuif op 'n daaglikse basis wat dokumentasie beteken nie net om geskep te word, maar in stand gehou.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top