私のプロジェクトでは3つのクラスがありますが、Apple、Orange、Pearと呼んでいます。XCodeの間違った警告は「Xプロトコルを実装していません」
AppleとOrangeの両方にデリゲートプロパティがあります。
彼らは両方とも、AppleDelegateとOrangeDelegateというヘッダファイルにプロトコルを定義しています。彼らはそれぞれ同様のシグネチャを持つ初期化子があり
:
- (id)initWithDelegate:(id<AppleDelegate>)delegate
- (id)initWithDelegate:(id<OrangeDelegate>)delegate
梨はOrangeDelegateを実装し、次のように定義されています。結果
Orange *anOrange = [[[Orange alloc] initWithDelegate:self] autorelease];
:
@interface Pear : NSObject <OrangeDelegate>
インサイド梨、私はこの電話をかけますこのコンパイラの警告:
Class 'Pear' does not implement the 'AppleDelegate' protocol
コンパイラはイニシャライザのプロトコルを認識しないようです。言い換えれば、それだけで、両方のために、この署名を認識します。
- (id)initWithDelegate:(id)delegate
私は梨で初期化子の「定義へジャンプ」をクリックしたとき、それはオプションとして両方のクラスが表示されますので。
私のメソッドの名前を変更する以外にこの警告を修正する方法はありますか?
奇妙なことに、梨をリンゴの代議員に割り当てることはできませんでした。私は思っています。 – Daniel
@ダニエル - それは私が思ったものですが、私はそうではありません。私はAppleを追加し、警告が表示されました。 OrangeとPearの両方がその前に存在し、警告なしでコンパイルされました。 Appleを追加したときにOrangeやPearのいずれも修正されなかったが、突然警告を発し始めた。 – DougW