я читал, как реализовать частные методы в Objective-C (Best way to define private methods for a class in 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
Надеюсь, кто-то уже понял это.
Cheers!
«К счастью, кто-то уже понял это». Итак, что вы спрашиваете? –
Язык путаница, я думаю. Исправлена. – nall
Благодарим вас за то, что вы поняли мой вопрос. Я допустил ошибку, используя слово «к счастью», когда я на самом деле имел в виду «надеюсь». Извините и благодарю вас! – Lio