czytałem jak zaimplementować metody prywatne w Objective-C (Best way to define private methods for a class in Objective-C) i pytanie pojawiło się w mojej głowie:metody prywatne korzystające kategorie w Objective-C: wzywającą Super z podklasy
Jak zarządzać implementować metody chronione, czyli prywatne metody, które są widoczne dla podklas?
Załóżmy, że mam MySuperClass z kategorią zawierającą wszystkie jej prywatne metody i chcę zaimplementować MySubclass nadpisując lub wywołując super do jednej z prywatnych metod MySuperClass. Czy to możliwe (stosując podejście Kategorie do wdrażania metod prywatnych)?
Spójrz na niektóre z tego kodu, na dole znajduje się metoda overriden.
// ===========================
// = File: MySuperClass.h
// = Interface for MySuperClass
// ===========================
@interface MySuperClass : Object
...
@end
// ===========================
// = File: MySuperClass.m
// ===========================
#import "MySuperClass.h"
// =================================
// = Interface for Private methods
// =================================
@interface MySuperClass (Private)
-(void) privateInstanceMethod;
@end
// =====================================
// = Implementation of Private methods
// =====================================
@implementation MySuperClass (Private)
-(void) privateInstanceMethod
{
//Do something
}
@end
// ================================
// = Implementation for MySuperClass
// ================================
@implementation MySuperClass
...
@end
// ===========================
// = File: MySubClass.h
// = Interface for MySubClass
// ===========================
@interface MySubClass : MySuperClass
...
@end
// ================================
// = Implementation for MySubClass
// ================================
#import MySubClass.h
@implementation MySubClass
//OVERRIDING a Super Private method.
-(void) privateInstanceMethod
{
[super privateInstanceMethod]; //Compiler error, privateInstanceMethod not visible!
//Do something else
}
@end
Mam nadzieję, że ktoś już to rozgryzł.
Pozdrawiam!
"Na szczęście ktoś już to rozgryzł." ... Więc o co pytasz? –
Zamieszanie języka, myślę. Naprawiony. – nall
Dziękuję ci, że moje pytanie było łatwiejsze do zrozumienia dla wszystkich. Popełniłem błąd używając słowa "na szczęście", kiedy faktycznie miałem na myśli "z nadzieją". Przepraszam i dziękuję bardzo! – Lio