2010-03-18 14 views
6

C'è qualche motivo per non scrivere app per iphone senza utilizzare il generatore di interfaccia?Applicazione iPhone senza utilizzare Interface Builder

(o in altre parole, è ok per scrivere applicazioni senza il costruttore?)

+0

Vorrei che qualcuno avesse fatto questa domanda al discorso tecnico iPhone in cui sono andato, mi avrebbe risparmiato un sacco di tempo a vaneggiare con IB –

risposta

4

Non ho mai scritto un'applicazione per iPhone che utilizza Interface Builder (file .xib), ma questo è il gusto proprio personale: come le applicazioni per essere codice al 100%.

Il motivo è che non mi piacciono le applicazioni che richiedono strumenti di progettazione se è necessario modificare qualcosa in seguito. Crea una dipendenza che potrebbe non essere un problema oggi o il mese prossimo, ma può diventare un problema tra 3 anni.

Quindi, la risposta è: sì, è bello scrivere app per iPhone senza utilizzare Interface Builder.

+1

Quindi, come evitare di creare una dipendenza ancora più arcana nel codice? –

1

Certo, è assolutamente perfetto scrivere app senza IB. Ci vuole un po 'più di setup (credo che ci siano alcune modifiche che devi apportare al tuo file Info.plist), ma è certamente possibile, e le persone lo fanno sempre.

Personalmente, preferisco usare Interface Builder per la maggior parte delle attività, ma di solito solo per ottenere il layout di base in atto (quindi non devo occuparmi di calcolare i rects, ecc.). Qualsiasi ulteriore personalizzazione preferisco fare nel codice.

0

È possibile modificare i file .XIB manualmente se si desidera. Sono XML, dopo tutto. Non posso fare a meno di averne almeno uno nel progetto. In alternativa, puoi creare tutti i tuoi controlli dal codice. Quest'ultimo richiede meno digitazioni, per quanto ne so.

Quindi, ci sono alcune app in cui un file XIB non sarebbe utile. Sto parlando di giochi, in cui le considerazioni artistiche/di progettazione hanno superato la convenienza di avere widget nativi.

Quindi sì, va bene sia a livello di progettazione (senza widget nativi) sia a livello di implementazione (sì widget nativi, ma sans IB).

+0

Sì * è possibile *, ma i file .xib sono un formato non documentato. Sono XML, quindi funzionano bene con i sistemi di controllo delle versioni. –

+0

Davvero non documentato? Silly me. In ogni caso, la creazione di widget nel codice è davvero un'opzione. –

+0

"non posso fare a meno di averne almeno uno nel progetto" - in realtà puoi rimuovere completamente i file xib dalla tua app e non è troppo difficile. controlla http://vimeo.com/3363949 – Yetanotherjosh

9

Personalmente, le mie applicazioni non utilizzano NIB al loro interno, ma è più una questione di come ho iniziato a fare lo sviluppo di qualsiasi altra cosa. Sono passato dallo sviluppo Mac (dove uso Interface Builder quasi ogni giorno) a iPhone da quando sono stati rilasciati i primi beta SDK. Inizialmente, non c'era alcun Interface Builder e anche quando è arrivato non si poteva fare molte cose con esso, quindi non ho mai avuto il tempo di conoscerlo veramente su iPhone. È più una questione di me che faccio quello che mi è familiare.

Jeff LaMarche fa un ragionamento convincente nel suo articolo "Don't Fear the Interface Builder" per poter utilizzare Interface Builder ovunque sia possibile e incoraggio i nuovi sviluppatori a imparare a utilizzarlo prima di passare alla generazione di interfacce utente programmatiche. Ti fa risparmiare moltissimo tempo per le interfacce usando elementi standard.

Alcune persone hanno sostenuto che esiste un vantaggio in termini di prestazioni utilizzando interfacce puramente programmatiche, ma Matt Gallagher ran a series of benchmarks e ha rilevato che questa velocità è tipicamente dell'ordine del 5-10%. Se vuoi veramente sbarazzarti dell'ultimo momento del tempo di avvio della tua applicazione, potresti avere il meglio di entrambi i mondi con lo nib2objc di Adrian Kosmaczewski, che genera Objective-C dai tuoi file NIB.

Tuttavia, ci sono molte volte che è necessario manipolare le interfacce a livello di codice, ad esempio per le visualizzazioni personalizzate e le animazioni. Questo codice può esistere in parallelo con Interface Builder senza troppa confusione.Di nuovo, è più una questione di preferenze personali a questo punto, ma il mio consiglio è di usare Interface Builder a causa del tempo che può salvarti.

Problemi correlati