たちは、親クラスカテゴリを持つクラスをサブクラス化するときにコンパイル警告を避けるには?
ParentViewController.h
@interface ParentViewController
....
@end
ParentViewController.m我々はそれをサブクラス
@interface ParentViewController()
- (NSArray *)selectedItems;
@end
@implementation ParentViewController
.....
@end
そして
ChildViewController.h
@interface ChildViewController : ParentViewController
....
@end
を持っていると言います
ChildClassViewController.m
@implementation ChildViewController
- (void)doSomething
{
// XCode Warning Flag on this line
NSUInteger count = [self selectedItems];
.....
}
Xcodeはコメント行で警告フラグを設定し、「インスタンスメソッドは、 『-selectedItems』( 『ID』の戻り型のデフォルト)を見つからないと言うであろう。
はい私はObjCではプライベートメソッドのようなものはありませんが、空のカテゴリを使用するとそのようにすることができます。しかし、何とかそれはサブクラスによって継承されません。
私は通常、メソッドをParentViewController.mからParentViewController.hに移動して修正します。私はそれをサブクラス化する必要があるので、私はメソッドを非公開にする能力が失われています。
は今、私の質問は:
なぜ親サブクラスは、.mファイルでその範疇に宣言されているこれらの方法を見つけることができないのですか?
警告フラグは削除できますが、メソッドを非公開にすることはできません。
もっと熟練した人がこの厄介な問題を説明するのに役立ちます。
これはうまくいきます。同じ.mファイル内で親とサブクラスを組み合わせることは、大きなものであるためオプションではありません。それらのプライベートメソッドを別々のファイルに配置するのは面倒です。私はこの答えを受け入れるだろう、私は他の方法があるとは思わない。 –
@SamuelChandra、ええ、同じファイルポイントはちょっとしたものでした。あなたはおそらくそれをするべきではありません。 –