Lomohome.com :: 괴발자 모근원

상황 1 : 
SuperScene 이라는 상위클래스에서 private 변수로 CGPoint winSize 라는 변수를 생성해 두었음.

//  SuperScene.h

...

@interface SuperScene : CCScene {

CGSize winSize; //윈도우 사이즈

}

...


상황 2 : 
이 SuperScene 을 상속 받은 다른 클래스들에서는 상위 클래스에서 선언한 winSize 변수에 자유롭게 접근이 가능함. 이렇게 구현된 클래스가 수십개가 있는데 문제가 없었다.

그런데 SuperScene을 상속받은 수많은 클래스 중에서 유독 한 클래스에서 선언하지 않았다고 에러.. 
뭔가가 잘못되었음. (이밖에 상위 클래스인 SuperScene 에서 선언한 변수들은 죄다 에러)

상속받은 클래스에서 변수를 선언하려고하면 중복선언이라고 에러..





해결책 : 
@property 와 @synthesize 를 구현한 멤버변수가 없으면 엄한데서 오류가 나오기 시작한다!!!
내 경우엔 BattleScene 이란 하위 클래스(SuperScene을 상속받은..) 에서 @property 로 CurrentWeapon 이라는 멤버 변수를 보내주고 @synthesize 로 구현까지 해주었는데 정작.. CurrentWeapon 이라는 멤버변수를 선언하지 않았다;;;

- 이렇게 되어있으면 문제.. 정작 변수 선언이 되어있지 않았다.

@interface BattleScene : SuperScene {

}


@property (nonatomic, retain) CCSprite* currentWeaponMark;

@synthesize currentWeaponMark;


- 요렇게 해주거나 변수가 필요없으면 @property 와 @synthesize 를 삭제한다.

@interface BattleScene : SuperScene {

CCSpritecurrentWeaponMark;

}


@property (nonatomicretain) CCSprite* currentWeaponMark;

@synthesize currentWeaponMark;

Posted by 모근원