Objective-C编译错误:二进制表达式的操作数无效

Objective-C编译错误:二进制表达式的操作数无效,objective-c,Objective C,代码段中标记有错误的行。错误表示二进制表达式int*的操作数无效 最好重新启动整个过程吗?您可能将正在使用的伤害属性之一定义为int*而不是int。请检查您的角色和武器类别。我怀疑self.character.damage。如果您指出的行确实是问题所在,那么您可能已经声明character类的damage属性返回int*而不是int。很容易犯这种错误,因为指向对象的属性始终是指针。然而,int不是对象类型,所以通常不需要在属性中存储指向int的指针 你所说的问题是: -(void)updateC

代码段中标记有错误的行。错误表示二进制表达式int*的操作数无效


最好重新启动整个过程吗?

您可能将正在使用的伤害属性之一定义为int*而不是int。请检查您的角色和武器类别。我怀疑self.character.damage。

如果您指出的行确实是问题所在,那么您可能已经声明character类的damage属性返回int*而不是int。很容易犯这种错误,因为指向对象的属性始终是指针。然而,int不是对象类型,所以通常不需要在属性中存储指向int的指针

你所说的问题是:

-(void)updateCharacterStatsForArmor:(RKArmor *)armor withWeapons:(RKWeapon *)weapon withHealthEffect:(int)healtheffect
{
    if (armor != nil){
        self.character.health = self.character.health - self.character.armor.health + armor.health;
        self.character.armor = armor;
    }
    else if (weapon != nil){
        // The problematic line:
        self.character.damage = self.character.damage - self.character.weapon.damage + weapon.damage;

        self.character.weapon = weapon;
    }
    else if (healtheffect != 0){
        self.character.health = self.character.health + healtheffect;
    }
    else {
        self.character.health = self.character.health + self.character.armor.health;
        self.character.damage = *(self.character.damage + self.character.weapon.damage);
    }
}

@end
但后来你有:

self.character.damage = self.character.damage - self.character.weapon.damage + weapon.damage;
看起来第二行是为了避免编译器错误,但似乎没有什么意义。只有在执行指针算术时,才可以取消对加法结果的引用,但对于名为“损坏”的属性来说,这没有多大意义

要解决所有这些问题,请查看角色类声明。您可能会看到如下内容:

self.character.damage = *(self.character.damage + self.character.weapon.damage);
删除该*并确保属性为assign,如下所示:

@property(...) int *damage;

此外,目前还不清楚海盗是如何卷入其中的。也许你提出这个问题有点草率?啊

什么是RK装甲,RK武器,如何定义其伤害属性?最后一行有一个*,那么为什么带有您的问题的行没有它呢?这似乎不符合逻辑。这是我的RK装甲和RK武器是我的装甲和武器类,我不知道为什么我猜它不起作用,但你应该展示它们的代码,至少是如何定义它们中的每一个的伤害。好的,这是大量的代码事实上,我们需要比你发布的更多的.h。请通过编辑您的问题而不是在评论中输入您的代码。特别是关于伤害声明的那一行。我该怎么做才能使它在以后不会变成self.character.damage=*self.character.damage+self.character.willer.damage?我在udemy上学习,这是一个海盗游戏,但我把它变成了一个不同的游戏,我有点想知道如何修复它。如果这样做有效,请查看属性文档,确保您理解对象和int之间的区别,并且您理解修复为什么会有帮助;属性强,非原子武器*武器;属性非原子整数健康;财产非原子损害;
@property(assign) int damage;