Mam strukturę klasy typu UIViewControllerSubclass : UIViewController
, gdzie jedyną funkcją klasy UIViewControllerSubclass jest #import UIViewController+Category.h
. Powodem, dla którego dodałem metody w kategorii jest to, że mogę również zrobić UITableViewControllerSubclass : UITableViewController
, który będzie również #import UIViewController+Category.h
. Jak wszyscy wiemy, nie powtarzaj się.Czy można bezpiecznie zastąpić metodę zdefiniowaną w kategoriach w Objective-C?
Teraz zakładamy, że UIViewController + Category.h ma strukturę:
@interface UIViewController(Category)
- (void) method1;
- (void) method2;
@end
Jak bezpieczny jest to, aby stworzyć UIViewControllerSubclassSubclass : UIViewControllerSubclass
, który będzie zastąpić method1
? Zakładam, że to zadziała, ponieważ wiadomość od Celu C przeminie, ale z jakiegoś powodu intuicja podpowiada mi, że robię to źle.
Należy pamiętać, że Objective-C jest "typowany przez kaczkę". Jeśli klasa obsługuje metodę, możesz (bezpiecznie) ją wywołać, nawet jeśli ta metoda nie jest zdefiniowana w pliku klasy .h. (Sposób wkradnięcia się poza sprawdzanie kompilatora zależy od ciebie.) –