estaba leyendo cómo implementar métodos particulares en Objective-C (Best way to define private methods for a class in Objective-C) y una pregunta aparecido en mi mente:Los métodos privados utilizando categorías en Objective-C: super llamando desde una subclase
¿Cómo se gestiona para implementar métodos protegidos, es decir, métodos privados que sean visibles para las subclases?
Supongamos que tengo un MySuperClass con una Categoría que contiene todos sus métodos privados, y quiero implementar MySubclass reemplazando o llamando a super a uno de los métodos privados MySuperClass. ¿Es eso posible (usando el enfoque de Categorías para implementar métodos privados)?
Eche un vistazo a parte de este código, en la parte inferior se encuentra el método modificado.
// ===========================
// = 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
Esperemos que alguien ya se haya dado cuenta de esto.
¡Salud!
"Por suerte, alguien ya se dio cuenta de esto." ... ¿Qué estás preguntando? –
Confusión de lenguaje, creo. Fijo. – nall
Gracias nall por hacer que mi pregunta sea más fácil de entender para todos. Cometí un error al usar la palabra "afortunadamente" cuando en realidad estaba "con suerte". Lo siento y muchas gracias! – Lio