2010-03-02 17 views
7

Mentre sto imparando l'API di iPhone, il libro che sto usando mi ha fatto tutto il possibile con Interface Builder. Anche noi (solitari qui a volte) scriviamo codice, ma mi sembra davvero di conoscere abbastanza bene Interface Builder.Quando dovrei usare l'Interface Builder?

So che Interface Builder è diverso da altri GUI Builder poiché utilizza oggetti serializzati e non scrive codice. Questa è presumibilmente una buona cosa. Quindi ... nel lavoro quotidiano, è lo strumento di scelta, o dovrei cercare di superare la mia dipendenza da Interface Builder?

Inoltre: se suggerisci che "dipende da cosa stai facendo", da cosa dipende? Come dovrei prendere la decisione di usare Interface Builder o no?

Nota: La versione soggettiva e polemica di questa domanda era intitolata, Interface Builder: Serious Tool o Just For Kids? ma ho deciso di non farlo perché voglio evitare di chiudere la domanda.

risposta

13

Interface Builder è davvero utilizzato per creare app. Dai un'occhiata a qualsiasi app per Mac Cocoa - che non è la maggior parte di Adobe o Microsoft - e vedrai che è piena di pennini. È leggermente più comune per le app per iPhone essere realizzate senza Interface Builder (perché l'SDK originale fornito senza IB), ma è ancora uno strumento molto utilizzato.

La differenza tra Interface Builder e la maggior parte dei builder della GUI è che Cocoa e Interface Builder sono stati pensati l'uno per l'altro. Infatti, se cerchi lo Cocoa mailing list archives, nel corso degli anni troverai molte persone che si chiedono come sia possibile creare un'app Cocoa senza utilizzando Interface Builder. (La risposta è sempre la stessa: puoi fare tutto in codice, ma stai solo perdendo tempo e rendendo più difficile progettare una buona interfaccia.)

+0

Grazie, questo è una specie di quello che pensavo. Almeno è una nota positiva in un giorno pieno di conteggi di riferimento. –

+0

So che questa è una vecchia domanda e una vecchia risposta, tuttavia sono totalmente d'accordo con questa risposta. – Moszi

+0

@Moszi, si potrebbe anche solo passare attraverso tutte le risposte di Chuck qui su SO. Sono costantemente perspicace e informativo. –

3

Il builder dell'interfaccia è ottimo se prevedi di utilizzare lo standard Elementi dell'interfaccia utente UIKit. L'uso di Interface Builder per progettare interfacce utente basate su UIKit aiuta anche a conformarsi allo Apple iPhone Human Interface Guidelines.

Ci sono solo una manciata di casi in cui non si vorrebbe usare Interface Builder, il più ovvio dei giochi che offre il proprio aspetto e atmosfera unici.

Non penso che sia necessario preoccuparsi di creare una "dipendenza da Interface Builder". È uno strumento, proprio come gli altri. Usarlo non è una dipendenza, è solo il modo in cui facciamo le cose.

+1

grazie Brian, questo non è vero con altri strumenti della GUI su altre piattaforme. Il codice creato con i costruttori spesso sembra orribile e può essere difficile da mantenere. Quindi non penso che sia come qualsiasi altro strumento. Sembra adattarsi bene a NON usarlo, o usarlo a volte. –

3

Interface Builder è un ottimo strumento. Usalo il più possibile.
Quando non puoi fare qualcosa usando solo Interface Builder, allora è il momento di scrivere codice che misuri IBOutlet e codice, o fallo solo in codice.

2

Interface Builder non genera codice, ma crea semplicemente un grafico oggetto di classi esistenti. Se guardi il file del pennino puoi vedere questo. È solo un elenco di regole per quali oggetti creare e quali relazioni impostare tra di loro. Non c'è codice in un pennino e c'è sorprendentemente pochissimo codice int nei vari metodi loadFromNib.

È l'accoppiamento runtime in Objective-c che rende possibile tutto ciò. Non credo che nessun altro linguaggio possa davvero farcela.

+0

Forse mi sbaglio, ma penso che anche Java abbia l'accoppiamento Runtime (tramite Reflection e invocazione dinamica) ... sebbene non ci sia un builder di interfaccia, è teoricamente possibile in molte lingue. No? –

+1

Java è stato ispirato in parte da Objective-C, quindi si avvicina ma IIRC, Java non ha contropartita del riferimento "id" quindi non è così flessibile come Objective-C in questo senso. Ogni linguaggio ha qualcosa che fa meglio di altri e l'accoppiamento runtime è Objective-C forte. – TechZen

Problemi correlati