2011-07-30 6 views
0

私はこの問題を探してみましたが、私が間違っていることを見つけることができませんでした。ここでObjective Cのプロパティ

は私のコントローラのヘッダである:ここで

#import <UIKit/UIKit.h> 

@interface BabyLearnViewController : UIViewController { 
    UIButton *btnImage; 
    MediaManager* myMediaManager; 
} 
@property (nonatomic, retain) IBOutlet UIButton *btnImage; 
@property (retain) MediaManager* myMediaManager; 

- (IBAction)setNewImage; 

@end 

は私のコントローラクラスである:

#import "BabyLearnViewController.h" 
#import "MediaManager.h"; 

@implementation BabyLearnViewController 

@synthesize btnImage; 
@synthesize myMediaManager; 

私はエラーが取得しています:

error: expected specifier-qualifier-list before 'MediaManager' 
error: no declaration of property 'myMediaManager' found in the interface 

任意のアイデア?通常、第1誤差は、あなたが円柱の参照を持っている場合に発生します。 'MediaManager'は何も参照しません。何か案は?

答えて

8

ヘッダーファイルで使用されている時点でMediaManagerクラスに言及していないため、コンパイラは "MediaManager"の内容を把握することができず、エラーが発生します。ヘッダーファイルのforward宣言を使用してそのクラスを宣言して、MediaManagerが実際にクラスであることをコンパイラに知らせる:

P.S.代わりに、ヘッダーにMediaManager.hをインポートすることもできますが、フォワード宣言を使用することをお勧めします。 MediaManagerの@class追加BabyLearnViewController

+1

フォワード宣言を使用するのはなぜですか? –

+0

@Rudy、前方宣言でヘッダー間の循環依存関係に陥ることはありません+ヘッダが少なくてもコンパイル時間が改善される可能性があります – Vladimir

+0

ありがとう、ありがたいです。 –

2

場所#import "MediaManager.h" これを試してみてください。 before @interface

1

のヘッダファイル内

関連する問題