2011-04-07 5 views
8

Quando stavo usando Xcode 3 l'avevo configurato con uno script perl trovato sul web che mi permetteva di generare automaticamente il codice @property, @synthesize e dealloc per nuove variabili di istanza. Xcode 4 non ha però il menu User Scripts.Xcode4 Generazione automatica di dichiarazioni @property e tutto ciò che ne consegue

C'è un modo per collegare questo tipo di script utente per Xcode 4 o Xcode 4 ha una nuova funzione che genera automaticamente tali elementi? (Ho guardato e non riesco a trovarne uno però).

Non sto parlando di collegamento a IBOutlets. So che posso trascinare da uno xib e creerà tutte le cose giuste per IBOutlet, ma sto cercando qualcosa che crei @property, @synthesize e il codice dealloc per ogni variabile di istanza.

Grazie, Kenny

+0

Non ho una soluzione per te ma ho sentito suggerire che il menu dei servizi potrebbe essere il modo di ottenere questo tipo di scripting in Xcode 4. Per l'audacia: sembra che ce ne siano alcuni (non documentati?) interfacce plugin per Xcode ... – n8gray

risposta

3

caldamente (e non posso sottolineare abbastanza) suggeriscono l'applicazione:

Accessorizer

Questo è di gran lunga l'applicazione più utile per scrivere objective- C e codice obiettivo-C 2.0 che ho trovato. Originariamente scritto nei giorni pre ObjC2.0, ha creato per te getters e setter di ivar. Nel corso degli anni continua a evolversi. Ora esegue proprietà, classi contenitore, codifica valore chiave, KVO.

Si adatta al tuo stile: su quale linea metti le parentesi, come fai il rientro, come commenta? Si installa anche come un servizio in modo da poterlo richiamare da XCode, copiarlo negli Appunti e incollarlo nuovamente in XCode.

Io non sono l'autore, non ottengo nulla per collegare questo. Tuttavia, ho introdotto il suo utilizzo in ogni team Mac su cui ho lavorato e ho convertito tutti i programmatori Obj-C al primo utilizzo.

Ha un periodo dimostrativo. Sicuramente provarlo e vedere se risolve il problema.

+2

Questo sembra un ~ ok ~ modo di procedere, ma per $ 10 mi aspetterei che ci sia molta più magia. In precedenza ho usato il perl + applecript trovato su http://cocoawithlove.com/2008/12/instance-variable-to-synthesized.html Questo è il livello di automazione che sto cercando. Non devo colpire una combinazione di tasti massiccia, quindi navigare, quindi digitare combo chiave, quindi navigare, quindi digitare combo, quindi navigare, quindi digitare combo. Lo script perl era solo una combo chiave e TUTTO è stato fatto automaticamente. :/Ti voterò, ma questa non è la risposta che sto cercando. :( –

+0

Non così pulito come l'opzione di script Matt Gallagher in xCode 3, ma l'utilizzo di Accessorizer con xCode 4 sembra fare il lavoro per me, raccomanderei di guardarlo. Vorrei solo che non fosse necessario passare al file di implementazione per – gamozzii

0

ho anche manca il script relativi alle proprietà, ma ho trovato una soluzione alternativa. Come notato altrove, XCode 4 genererà automaticamente il codice property/synthesize/dealloc per IBoutlet che viene collegato tramite IB.

Così ho un XIB fittizio nel mio progetto chiamato Property_Hack.XIB con alcuni UILabels, e ogni volta che ho bisogno di una nuova proprietà per una classe, vado su Property_Hack, cambio il proprietario e "connetti" un'etichetta al file. Tutto quello che devi fare è inserire il nome di ivar che desideri e XCode aggiungerà l'istruzione @property a .h, e nel file .m aggiungerà il codice @synthesize e dealloc. Quindi modifico il file .h (elimina la parola chiave IBoutlet e modifica UILabel nel tipo di dati desiderato).

Piuttosto hacker e tutt'altro che perfetto, ma è comunque un risparmio di tempo rispetto allo sforzo manuale di modifica di entrambi i file. Poiché NSIntegers e BOOL non hanno bisogno del codice dealloc e vengono assegnati al posto di retain, di solito li imposto manualmente invece di utilizzare questo approccio.Se NSStrings debba o meno copiare o conservare è un argomento che non eseguirò di nuovo qui :-)

+1

Gravemente limitato e complicato per ottenere qualcosa di diverso dagli elementi dell'interfaccia utente non è proprio un Soluzione: ogni IDE moderno del mondo ha un modo per generare automaticamente i tuoi getters e setter. –

+1

Non sono d'accordo con Kenny, penso che questo sia un grande sviste e mi fa stringere i denti. che accelera il flusso di lavoro è meglio di niente.L'app per iPad aziendale su cui sto lavorando ha 67 classi con 503 proprietà :) –

1

Sono riuscito a ottenere lo script perl Xcode 3 sopra menzionato che funziona sotto Xcode 4 come comportamento.

L'ho installato su github. https://bitly.com/HXHiij

Spero che questo aiuti.