Entrambi sembrano richiedere lo stesso sforzo per usare:
Singleton: richiede un file .h e .m, deve essere importato in qualsiasi classe da cui si desidera chiamarlo e quindi deve essere istanziato
Com'è diverso da una classe?
Una classe è singleton e si comporta esattamente come qualsiasi altra classe, con l'unica eccezione che ogni istanza di un singleton fa riferimento agli stessi dati dell'oggetto. Ciò significa che qualsiasi istanza di una classe singleton è in realtà la stessa istanza.
Un singleton non è proprio la stessa di una classe, è più comunemente noto come modello di design. Di solito un singleton è una classe tale che solo una sua istanza può esistere alla volta.
In pratica, potresti scrivere una classe senza nulla di speciale, creare un'istanza all'inizio e, per tutto il codice, utilizzare la stessa istanza e puoi comunque chiamarla singleton. Normalmente, le persone aggiungono un piccolo codice di overhead, in modo tale che un oggetto sia istanziato come per normale, ma quando qualcuno tenta di creare un'istanza da un secondo oggetto, restituisce invece il primo oggetto. Ciò consente dati globali (alcuni sostengono che ciò sia sbagliato), consente all'istanza di essere istanziata da tutto ciò che il codice richiede prima, consentendo a tutte le parti del codice di fare riferimento a esso come se stessero creando un oggetto e implementando i distruttori in modo appropriato , puoi persino distruggere e ricreare l'oggetto se devi farlo per qualche motivo.
Puoi consultare il collegamento per ulteriori informazioni e codice di esempio per far rispettare il modo in cui verrà utilizzato il singleton.
Gli schemi di progettazione sono un argomento affrontato nel libro chiamato "Design Patterns", da un gruppo noto come "Gang of Four", che è un po 'un classico nel mondo della programmazione. Analizza diversi modelli di progettazione e introduce molti più dettagli non solo sull'implementazione, ma anche sul motivo per cui si dovrebbe o dovrebbe utilizzare un modello per quale tipo di scenario. Puoi anche consultare link per una panoramica più breve.
Leggi altre domande sui tag objective-c