La catégorie est une alternative du sous-classement. Que se passera-t-il si le message de catégorie a déjà été implémenté dans la classe. Prenez UIViewController comme exemple,A propos de la catégorie dans Object-C: remplacement existait message
@implementation UIViewController (Landscape)
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations.
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
@end
Donc, si nous obtenons une XXViewController qui s'étend UIViewController, est que le message par défaut sera mise en œuvre comme ci-dessus? Comme vous pouvez le voir, mon but est de rendre tout le paysage de XXViewController compatible, alors utilisez la catégorie pour atteindre cet objectif.
En fait, la stratégie traditionnelle utilisera la sous-classe, et cela fonctionne. Que diriez-vous de la manière de catégorie?
Merci