2012-07-16 1 views
12

J'essaie de planifier comment ajouter quelques méthodes à toutes les instances de certains objets. Je pense que l'ajout d'une catégorie à l'objet parent (UIViewController) fonctionnerait pour ce que je veux faire, mais puis-je remplacer une méthode ajoutée de cette façon? La plupart du temps, les sous-classes utiliseront les méthodes par défaut mais je sais que je devrai remplacer la méthode au moins une fois.Les méthodes de catégorie Can peuvent-elles être surchargées? IOS

Aussi quelles autres méthodes dois-je considérer pour ce que j'essaie de faire?

Exemple de ce que je suis en train de faire:

J'ai un ensemble d'objets qui agissent comme les pages d'un journal. Ces pages sont des sous-classes de UIViewControllers. Je veux ajouter des méthodes de chargement, d'enregistrement et similaires. Dans une classe de journal (sous-classe de NSObject), j'ai un tableau stockant des instances de chaque page de journal. Je le veux afin que je puisse choisir une page du tableau et exécuter des méthodes sans devoir connaître la classe d'objet spécifique car elles devraient toutes avoir les méthodes.

Répondre

22

Réponse courte: oui, vous pouvez. Pour les besoins de l'héritage, les méthodes de catégorie sur une superclasse sont traitées comme des méthodes qui sont réellement définies dans la superclasse, et peuvent être remplacées de la même manière.

+0

Cela a du sens, mais j'ai l'impression que la réponse longue pourrait dire quelque chose comme «Apple ne s'en approuve pas» ou quelque chose comme ça. – RMDan

+8

Apple n'approuve pas l'utilisation d'une catégorie dans une sous-classe pour remplacer une méthode dans la super-classe, mais il n'y a rien de mal à utiliser une méthode dans une sous-classe pour remplacer une catégorie dans une super-classe. En fait, chaque fois que vous sous-classez une classe de structure, vous avez de bonnes chances de le faire sans le savoir. –

+0

Merci pour la réponse, mais j'ai trouvé une meilleure façon de faire ce que je veux. Rien de mal avec votre réponse, juste regardé à travers mon code et trouvé un meilleur endroit pour faire le code supplémentaire dont j'avais besoin sans avoir à ajouter des méthodes. – RMDan

Questions connexes