2012-04-03 10 views
5

注:これはthis questionに似ていますが、同じではありません。約束します。重複したプロトコル定義の警告ですが、このプロトコルの倍数が必要です

テーブルの内容を並べ替えるためのモーダルビューを呼び出す一連のテーブルビューがあります。これを行うために、私は1つのテーブルビューコントローラのヘッダーファイルで簡単なプロトコルをセットアップし、それは素晴らしい仕事をしました。今、私はそれは単なる警告で実現するが、私は希望

を無視している「ModalViewDelegate」の

重複するプロトコルの定義:私は、私の他のテーブルビューコントローラにこのプロトコルを上書きコピーしてこの警告を得ましたコンパイルするたびにそれを見ないでください。警告を取り除くために、プロトコルが最初に定義されたヘッダファイルをインポートしました。もう一度、私は完全に満足していませんでした。私は警告なしでプロトコルを使用できるので、ヘッダーファイルをすべてのテーブルビューにインポートするのは面倒です。

これまでにお読みいただきまして、ありがとうございます。私の質問は「これはなぜ起こったのですか?まだ同じプロトコルを使用している間、この警告を取り除く良い方法はありますか?

+1

コードなしでは、何か便利なことをするのは本当に難しいでしょう。 – CodaFi

+2

独自のヘッダーにプロトコルを実装し、必要な場所を含めます。 –

答えて

7

同じプロトコルを使用しているときにこの警告を取り除く良い方法はありますか?

コンパイラは、参照するためにプロトコルについて知る必要があります。これを実現するには、プロトコルが宣言されている場所のヘッダーを、使用しているファイルにインポートするか、またはこれらのファイルのプロトコルの前方宣言を作成します(@protocol MyProtocol;)。 2つ目は、(循環的なインポートを避けるために)プロトコルがお互いに参照する必要がある場合にのみ実際に役立ちます。クラスがプロトコルを採用する必要がある場合、プロトコル内のメソッドの宣言を見る必要があります。つまり、プロトコル宣言自体、つまりヘッダーを参照する必要があります。

私は警告なしでプロトコルを使用することができるので、すべてのテーブルビューにヘッダーファイルをインポートするのはうんざりしているようです。

これは物事がうまくいくわけではありません。プロトコルの宣言を自身のヘッダーに入れて、それが必要な場所にインポートするのは理にかなっているようです。

+1

ありがとう!私は完全にプロトコルのためのヘッダーを作ることができることを忘れてしまった。これは私が探していた解決策です。 – Squatch

2

@protocolがクラスのヘッダー内で定義されているのと同様の警告を発見しました。そのプロトコルを独自の.hに分割し、それを他の場所にインポートすることで修正しました。

関連する問題