Dopo aver letto un sacco di blog, voci del forum e diversi documenti Apple, Non so ancora se una sottoclasse estesa in Objective-C sia una cosa saggia da fare o meno.La sottoclasse in Objective-C è una cattiva pratica?
Prendiamo ad esempio il caso seguente:
dire che sono lo sviluppo di un gioco di puzzle, che ha un sacco di elementi. Tutti gli elementi condividono un determinato numero di stesso comportamento. Poi, nel mio raccolta di elementi, diversi gruppi di elementi quota pari comportamento, gruppi di distinzione da gruppi, ecc ...
Così, dopo aver determinato quello che eredita da ciò, ho deciso di sottoclasse fuori di oblio. E perché non dovrei? Considerando il semplice comportamento generale del dispositivo con questo modello, I penso di aver realizzato qualcosa per OOP è pensato per.
Ma - e questa è la fonte della mia domanda - Apple cita utilizzando i delegati, i metodi di origini dati e protocolli informali a favore di sottoclassi. Mi fa davvero impazzire il perché?
Sembra che ci siano due campi. Quelli a favore di sottoclassi, quelli in fafor di no. Apparentemente dipende dal gusto personale. Mi chiedo quali sono i pro ei contro della sottoclasse massiva e non la sottoclasse massicciamente?
Per concludere, la mia domanda è semplice: Ho ragione? E perché o perché no?
Kriem, Apple sta parlando dell'utilizzo di Cocoa in generale, non di qualcosa con Objective-C. Per ogni singolo progetto, dovrai decidere come impostare al meglio la tua applicazione e il codice base. Nel caso di Apple, hanno creato Cocoa (specialmente AppKit/UIKit) usando i paradigmi MVC e IoC, quindi suggeriscono di non creare sottoclassi di cose come NSControl, ecc. Quando invece si possono usare i delegati. Per riassumere: questo avviso è specifico per il framework Cocoa, non per Objecive-C in generale. –
@ Jason: questa è una buona risposta, perché lasciarla come un semplice commento? – mouviciel
@mouviciel - Non ci ho pensato, suppongo. Ora ci sono un certo numero di risposte che fondamentalmente dicono la stessa cosa, quindi non sembra valsa la pena aggiungere più rumore :) –