私はObjective-Cでプライベートメソッドを実装する方法(Objective-Cでクラスのプライベートメソッドを定義する最良の方法)を読んでいて、質問が頭に浮かびました:
保護されたメソッド、つまりサブクラスに表示されるプライベートメソッドをどのように実装しますか?
すべてのプライベートメソッドを含むカテゴリを持つMySuperClassがあり、MySuperClassプライベートメソッドの1つに対してスーパーをオーバーライドまたは呼び出すMySubclassを実装するとします。それは可能ですか(プライベートメソッドの実装に向けたカテゴリアプローチを使用)?
このコードのいくつかを見てください。下部にオーバーライドされたメソッドがあります。
// ===========================
// = 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
うまくいけば、誰かがすでにこれを理解しています。
乾杯!