私は Projectile というクラスを持っています (これは Cocos2D CCSprite クラスから継承されていますが、それが問題に関連しているとは思えません)。含まれているのは、「type」と呼ばれる int だけで、これをプロパティにしました。
Projectile.h:
@interface Projectile : CCSprite{
int type;
}
@property int type;
@end
投射物.m:
#import "Projectile.h"
@implementation Projectile
@synthesize type;
@end
今私がやろうとしているのは、次のように、ゲームのメイン クラスにそのプロパティを設定することだけです。
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
Projectile *newProjectile = [CCSprite spriteWithSpriteFrameName:@"Bullet.png"];
newProjectile.position = spaceShip.position;
newProjectile.type = kLaser; // defined earlier as #define kLaser 1
[objectsSpriteSheet addChild:newProjectile z:kProjectileZValue];
[projectiles addObject:newProjectile];
return YES;
}
これを実行するたびに、newProjectile.type = kLaser 行でクラッシュします。
-[CCSprite setType:]: unrecognized selector sent to instance 0x1ed82f10
間違いを犯すのは単純すぎるように思えます.Xcodeはプロパティをオートコンプリートし、存在しないというエラーを出さないため、プロパティを明確に認識しています.
また、完全に実行される非常によく似たコードを他の場所にも持っています。
誰かがこれに光を当てることができれば、私は最も感謝しています。別の方法で回避できると確信していますが、可能であればなぜこれが機能しないのかを理解したいと思います.