2012-03-07 17 views
2

私はFooterSelectorView.hに2つの問題が発生しています。 1つは警告で、もう1つはエラーです。何らかの理由でxcodeがFooterArchiveItemViewを認識しないので、他の問題を引き起こしているものとして自分のオブジェクトを入力することができません。誰もこれまでにこのようなことを見たことがありますか?どうすれば修正できますか?iosクラスが見つかりません "タイプが予想されています"

FooterSelectorView.h

#import <UIKit/UIKit.h> 
#import "FooterArchiveItemView.h" 

@interface FooterSelectorView : UIImageView 

// #warning Type of property 'activeItem' does not match type of accessor 'setActiveItem:' 
@property (nonatomic, retain) FooterArchiveItemView *activeItem; 

// #error Expected a type 
- (void)setActiveItem:(FooterArchiveItemView *)activeItem_; 
- (void)update; 
- (CGPoint)absoluteCenterOf:(UIView *)obj; 

@end 

関連するクラス

FooterArchiveItemView.h

#import <UIKit/UIKit.h> 
#import "AutosizeableView.h" 
#import "FooterArchiveView.h" 

typedef void (^ DayBlock)(void); 

@interface FooterArchiveItemView : AutosizeableView { 
    DayBlock dayBlock; 
} 

@property (nonatomic, retain) IBOutlet UIButton *day; 
@property (nonatomic, retain) IBOutlet UIImageView *bullet; 

- (void)setDayBlock:(DayBlock)block; 

@end 

AutosizeableView.h

答えて

8

カスタムクラスをインポートするのではなく、ヘッダーインターフェイスファイル内でObj-Cの習慣に従うことをお勧めします。例えば、FooterSelectorView.hではなく、中:

#import "FooterArchiveItemView.h" 

クラスをフォワード-宣言:

@class FooterArchiveItemView 

次に、実装ファイル(FooterSelectorView.m)で、あなたがインポートします。練習を見ても実際には問題は解決しないかもしれません(私は何が起こっているのか正確にはわかりませんが、個人的には推測の危険を冒すためにもう少しコードを見たいと思っています)。

この規則の注目例外はAppleのフレームワークである - それらは、ヘッダーにインポートされます。

+0

私はこれを成功させずに試してみましたが、これを数多くのクラスに追加していますが、まだ何もありません。しかし、私はすべてのクラスの宣言をコメントし、それは働いた。とても奇妙な.. - これはちょうどベストプラクティスか何か? – Jacksonkr

+0

はうれしいそれはあなたがどこかに、ここでいくつかの良い説明をのGot:あなたは安全にあなたのヘッダファイルを構築しない限り、http://stackoverflow.com/questions/322597/class-vs-import – isaac

+0

前方宣言は、はるかに安全なヘッダファイル内の輸入よりも(ヘッダAはクラスBをインポートし、ヘッダBはクラスAをインポートします)。私はこれが前方宣言によって解決されると仮定します。ヘッダー(.mファイルにインポートされる)は自分自身でインポートを実行していないため、ループでスタックすることはできません。 – Warkst

関連する問題