2012-07-16 8 views
12

Próbuję zaplanować, jak dodać kilka metod do wszystkich wystąpień niektórych obiektów. Myślę, że dodanie kategorii do obiektu nadrzędnego (UIViewController) będzie działało dla tego, co chcę zrobić, ale czy mogę przesłonić metodę dodaną w ten sposób? W większości przypadków podklasy będą używały domyślnych metod, ale wiem, że będę musiał zastąpić tę metodę co najmniej raz.Czy metody kategorii mogą zostać nadpisane? IOS

Również jakie inne metody należy rozważyć w odniesieniu do tego, co próbuję zrobić?

Przykład co usiłuję zrobić:

Mam zestaw obiektów, które działają jak stronach dziennika. Te strony są podklasami UIViewControllers. Chcę dodać metody ładowania, zapisywania i podobne. W klasie dziennika (Subclass z NSObject) mam tablicę przechowującą wystąpienia każdej strony dziennika. Chcę tego, abym mógł wybrać stronę z tablicy i uruchomić metody bez znajomości konkretnej klasy obiektu, ponieważ wszystkie one powinny mieć metody.

Odpowiedz

22

Krótka odpowiedź: tak, możesz. Dla celów kategorii dziedziczenia metody na superklasie są traktowane jak metody, które są faktycznie zdefiniowane w nadklasie i mogą być nadpisane w ten sam sposób.

+0

To ma sens, ale mam przeczucie, że długa odpowiedź może zawierać wyrażenie "Apple nie aprove z tego" lub coś podobnego. – RMDan

+8

Apple nie zatwierdza używania kategorii w podklasie do nadpisania metody w nadklasie, ale nie ma nic złego w używaniu metody w podklasie do nadpisania kategorii nadklasy. W rzeczywistości, gdy podklasujesz klasę szkieletową, istnieje duża szansa, że ​​robisz to bez zdawania sobie z tego sprawy. –

+0

Dziękuję za odpowiedź, ale znalazłem lepszy sposób robienia tego, co chcę. Nic złego w twojej odpowiedzi, przejrzałem mój kod i znalazłem miejsce na beter, aby zrobić dodatkowy kod, którego potrzebowałem bez konieczności dodawania metod. – RMDan

Powiązane problemy