내가끄적인글/프로그래밍
[objC] 상위클래스에서 선언한 변수를 상속받은 클래스에서 undeclared 나는 경우..
모근원
2011. 2. 11. 09:40
상황 1 :
뭔가가 잘못되었음. (이밖에 상위 클래스인 SuperScene 에서 선언한 변수들은 죄다 에러)
SuperScene 이라는 상위클래스에서 private 변수로 CGPoint winSize 라는 변수를 생성해 두었음.
// SuperScene.h
...
@interface SuperScene : CCScene {
CGSize winSize; //윈도우 사이즈
}
...
상황 2 :
이 SuperScene 을 상속 받은 다른 클래스들에서는 상위 클래스에서 선언한 winSize 변수에 자유롭게 접근이 가능함. 이렇게 구현된 클래스가 수십개가 있는데 문제가 없었다.
그런데 SuperScene을 상속받은 수많은 클래스 중에서 유독 한 클래스에서 선언하지 않았다고 에러..
상속받은 클래스에서 변수를 선언하려고하면 중복선언이라고 에러..
해결책 :
@property 와 @synthesize 를 구현한 멤버변수가 없으면 엄한데서 오류가 나오기 시작한다!!!
내 경우엔 BattleScene 이란 하위 클래스(SuperScene을 상속받은..) 에서 @property 로 CurrentWeapon 이라는 멤버 변수를 보내주고 @synthesize 로 구현까지 해주었는데 정작.. CurrentWeapon 이라는 멤버변수를 선언하지 않았다;;;
- 이렇게 되어있으면 문제.. 정작 변수 선언이 되어있지 않았다.
@interface BattleScene : SuperScene {
}
@property (nonatomic, retain) CCSprite* currentWeaponMark;
@synthesize currentWeaponMark;
- 요렇게 해주거나 변수가 필요없으면 @property 와 @synthesize 를 삭제한다.
@interface BattleScene : SuperScene {
CCSprite* currentWeaponMark;
}
@property (nonatomic, retain) CCSprite* currentWeaponMark;
@synthesize currentWeaponMark;