2011-01-14 20 views
2

ここでは基本的にサブクラスでも見えるクラスの拡張です。私は、独自の@implementationブロックをクラスファイルとは独立して別のCategoryファイルに宣言することで、その効果が達成できると思います。スーパークラスと各サブクラスは、#ヘッダをインポートできます。それは私が考えることができる最高ですが、不要なファイル汚染のように感じられ、カテゴリーを使ってプライベートメソッドを実現する練習は、主にクラス拡張によって取り除かれました。私はそれが不可能だと思っていますが、私より冷たい誰かがより良い方法を考えていたことを機会に頼んでいます。プライベートメソッドとプロパティをサブクラスに表示させることはできますか?

答えて

2

独自の提案に従うことができます(別のヘッダーでプライベートメソッドを宣言します)。ただし、カテゴリではなく、拡張子を使用できます。

アップルはこれをUIGestureRecognizerで正確に実行します。 UIGestureRecognizerSubclass.hを見てください。

+0

ええ、同じ考え方が拡張機能で動作する可能性がありますが、どのようにスライスしても、余分なコードファイルですか? –

+0

それはどちらか、またはあなたがマクロトリッキーを行うことができます。あなたのサブクラスのstuffの前に '#ifdef MY_CLASS_PRIVATE'を実行して、あなたの実装とサブクラスで' #define MY_CLASS_PRIVATE \ n#import 'を使用してください。私はサブクラスが何をすべきかがはっきりしているので、余分なファイルを好む傾向があります。 –

+0

ああ、面白い。ええ、私は余分なファイルを取るだろう。 Appleがそれを使用していることを指摘したので、このオプションがどのように魅力的であるかは面白い。ありがとう。 –

関連する問題