Я читал, как реализовать частные методы в Objective-C (Лучший способ определить частные методы для класса в Objective-C), и возник вопрос: мой разум:
Как вам удается реализовать защищенные методы, то есть частные методы, видимые для подклассов?
Предположим, у меня есть MySuperClass с категорией, содержащей все его частные методы, и я хочу реализовать переопределение MySubclass или вызов super одному из личных методов MySuperClass. Возможно ли (используя подход "Категории" к реализации частных методов)?
Взгляните на некоторые из этого кода, внизу находится метод 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
Надеюсь, кто-то уже понял это.
Ура!