ここでの私の質問は、実際には必要のない余分なオーバーヘッドを作成するプロトコルではないということです。
追加のオーバーヘッドはありません。
新しいクラスにメソッドが必要な場合は、それを実装するだけです。プロトコルから継承する必要があるのはなぜですか?
まあ、それがあなたのニーズにとって理想的な方法であれば、共通の実装のサブクラスを確実に宣言できます。これを試すと、以下に概説する問題に遭遇する可能性があります。
プロトコルは実際の物理タイプではないため、よく使用されます。メソッドやその他のプロトコルのインターフェースです。通常、それらは小さくて専門的です。objc は複数の継承を提供しないため、短い拡張にはプロトコルが非常に便利です。
複雑なサブクラスであり、1 つ以上のプロトコルを継承するタイプを見てください。NSString <NSCoding, NSCopying, NSMutableCopying, NSObject>
例として取り上げます。objc が単一継承を使用することを知っている場合は、このクラスを実装し、それらすべてのプロトコルから「継承」する方法を検討してください。次に、すべての Foundation 型に対してこれを実装した後に、これらの型を渡すときにクライアントに与える影響を検討してください。クラス階層とインターフェイスは非常に乱雑になります。多くのクラスのバリエーションの数は、これらすべてのタイプをパラメーターとして収容するために爆発的に増加します。ほとんどの人はその時点より前に停止し、型の安全性を落とすだけです。これも非常に悪い考えです。プロトコルを使用すると、「このインターフェイスを実装」し、単純な言語機能でタイプ セーフをすべて実現できます (多重継承はすぐに見苦しくなります)。