2011-07-30 6 views
0

이 문제를 검색해 보았지만 잘못하고있는 것을 발견하지 못했습니다.목표 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를 임포트 할 수 있지만, forward 선언을 사용하는 것이 좋습니다.

+1

왜 순방향 선언을 선호합니까? –

+0

@Rudy, forward 선언을 사용하면 헤더 사이의 순환 종속성에 돌입하지 않으며 헤더가 적어지면 컴파일 시간이 약간 향상 될 수 있습니다. – Vladimir

+0

감사합니다. –

2

장소 #import "MediaManager.h" 이 BabyLearnViewController

의 헤더 파일에
1

는 MediaManager @class 추가하려고; before @interface