2012-07-16 14 views
12

Sto cercando di pianificare come aggiungere un paio di metodi a tutte le istanze di determinati oggetti. Penso che l'aggiunta di una categoria all'oggetto padre (UIViewController) possa funzionare per quello che voglio fare, ma posso sovrascrivere un metodo aggiunto in questo modo? La maggior parte delle volte le sottoclassi useranno i metodi predefiniti, ma so che dovrò sovrascrivere il metodo almeno una volta.È possibile sovrascrivere i metodi di categoria? IOS

Anche quali altri metodi dovrei considerare per ciò che sto cercando di fare?

esempio di quello che sto cercando di fare:

Ho una serie di oggetti che si comportano come le pagine di un diario. Queste pagine sono sottoclassi di UIViewControllers. Voglio aggiungere metodi per caricare, salvare e simili. In una classe journal (sottoclasse di NSObject) dispongo di un array che memorizza le istanze di ciascuna pagina del journal. Lo voglio così posso selezionare una pagina dall'array ed eseguire i metodi senza dover conoscere la classe dell'oggetto specifica in quanto dovrebbero avere tutti i metodi.

risposta

22

Risposta breve: sì, è possibile. Per scopi di ereditarietà, i metodi di categoria su una superclasse vengono trattati come metodi effettivamente definiti nella superclasse e possono essere sovrascritti nello stesso modo.

+0

Questo ha senso, ma ho la sensazione che la risposta lunga potrebbe indicare qualcosa come "Apple non approva di questo" o qualcos'altro come quello. – RMDan

+8

Apple non approva l'utilizzo di una categoria in una sottoclasse per sovrascrivere un metodo nella superclasse, ma non c'è niente di sbagliato nell'usare un metodo in una sottoclasse per sovrascrivere una categoria su una superclasse. In effetti, ogni volta che si sottoclassi una classe framework ci sono buone probabilità che tu lo stia facendo senza rendertene conto. –

+0

Grazie per la risposta, ma ho trovato un modo migliore di fare quello che voglio. Non c'è niente di sbagliato nella tua risposta, ho semplicemente controllato il mio codice e ho trovato un punto critico per fare il codice aggiuntivo di cui avevo bisogno senza dover aggiungere metodi. – RMDan

Problemi correlati