Je pense que cela doit être un problème très courant en programmation de jeux où vous avez beaucoup de personnages avec diverses capacités.
Je utilise des protocoles pour définir les actions des personnages chaque fois que possible et l'héritage lorsque j'ai besoin que des objets partagent de grands blocs de code. Le problème avec les protocoles est qu'ils définissent seulement l'interface, donc l'implémentation est souvent un code dupliqué. Existe-t-il une meilleure approche à ce problème, ou dans ce cas, est-il acceptable d'avoir un peu de duplication de code? Il n'y a pas d'héritage multiple en Objective-C, donc c'est hors de question.