2011-01-31 6 views
0

私の望むやり方で自分のプロトコルを構築できないようで、派生クラスを使用する際の問題を絞りました。私がココアのクラスを使用する場合、それは動作するようです。ここでは「『MYVIEW』の前に 『)』予想される」MYVIEWクラスは、私が構築しようとしたときにだから私はエラーを取得するプロトコル内でのデリゲートメソッドの作成

#import <UIKit/UIKit.h> 
@interface MyView : UIView { 
    NSString *whatever; 
} 
- (void)myMethod; 
@end 

@implementation MyView 
- (void)myMethod { 
doSomething... 
} 
@end 

...

#import <Foundation/Foundation.h> 
#import "MyView.h" 

@protocol MyDelegate 
- (void)view:(MyView *)aView didDoSomethingWithString:(NSString *)string; 
@end 

...私が持っているものです。カスタムクラスMyViewをUIViewに置き換えると、コードがコンパイルされます。私は、誰かが私が見落としているものを見てほしいと思っています。任意のアイデアが評価されます。

ありがとうございました。

+0

宣言にプロトコル宣言を、プロトコル宣言にビュー宣言を含めていますか?私はどちらも、お互いを参照しているのですか? – seppo0010

+0

OH DRATS!ええ、やりますよ。私は循環参照を持っています。腐ったものは私の上に忍び寄る。 MyViewクラスでは、プロトコルを実装するid型への参照があります。 "id "私はそれを見つけられませんでした。ありがとう! – Rob

答えて

2

MyView.hには@interface MyView : UIViewが含まれていますか?

また、インポートする代わりに@classを使用することもできます。例えば

@class MyView; 
@protocol MyDelegate 
- (void)view:(MyView *)aView didDoSomethingWithString:(NSString *)string; 
@end
+0

申し訳ありません間違った投稿にコメントを付ける。無視する。 – drekka

+0

ありがとうseppo、これも動作します。しかし私は循環参照を削除すると思います。 – Rob

1

@interfaceと@implementationの部分を別のファイル(同じファイルにある場合)に入れてみてください。 MyView.mにすべてのものがあり、存在しないMyView.hをインポートしているようです。

+0

私は同意します。問題は構文上の問題ではなく、ファイルの問題が存在しないように見えます。私はしばしばxcodeエラーが間違っている可能性があることを発見しました。ときにはそれが意味をなさないときは、基本に戻って各部をチェックするだけです。 – drekka

+0

申し訳ありません。それらは別々のファイルにあります。私は2つのコードブロックを使用すべきでした。 – Rob

関連する問題