我有一个名为 Projectile 的类(它继承自 Cocos2D CCSprite 类,但我怀疑这与问题有关)。它只包含一个名为“type”的整数,我已将其制成一个属性。
射弹.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 清楚地知道该属性,因为它会自动完成它并且不会给我一个错误说它不存在。
我在其他地方也有非常相似的代码,可以完美执行。
如果有人能阐明这一点,我将不胜感激,我相信我可以用另一种方式解决它,但我想了解为什么这在可能的情况下不起作用。
最佳答案
是的,当你说 Projectile *newProjectile = [CCSprite spriteWithSpriteFrameName:@"Bullet.png"];
时,newProjectile 将是 CCSprite 类型的对象,它没有该属性.
关于objective-c - int 属性出现无法识别的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13972005/