Objective c 为什么不是';我的图像交换不能工作吗?

Objective c 为什么不是';我的图像交换不能工作吗?,objective-c,ios,Objective C,Ios,这看起来很简单,我很尴尬。每次我触发它,它都会保持在“开”状态。它永远不会通过关闭的条件 -(void) lightbulbSwapImages { NSImage *bulbOn = [NSImage imageNamed: @"sidebar_lightbulb_on.png"]; NSImage *bulbOff = [NSImage imageNamed: @"sidebar_lightbulb_off.png"]; if (lightbulb.image = b

这看起来很简单,我很尴尬。每次我触发它,它都会保持在“开”状态。它永远不会通过关闭的条件

-(void) lightbulbSwapImages
{
    NSImage *bulbOn = [NSImage imageNamed: @"sidebar_lightbulb_on.png"];
    NSImage *bulbOff = [NSImage imageNamed: @"sidebar_lightbulb_off.png"];
    if (lightbulb.image = bulbOff)
    [self.lightbulb setImage: bulbOn];
    else
    [self.lightbulb setImage: bulbOff];
}

=
更改
=

- (void)lightbulbSwapImages
{
    NSImage *bulbOn = [NSImage imageNamed: @"sidebar_lightbulb_on.png"];
    NSImage *bulbOff = [NSImage imageNamed: @"sidebar_lightbulb_off.png"];
    if (self.lightbulb.image == bulbOff)
       [self.lightbulb setImage: bulbOn];
    else
       [self.lightbulb setImage: bulbOff];
}
问题背后的原因: 您正在做的是,尝试将
bulbOff
分配给
lightbulb.image
,并且您正在检查的结果作为一个条件,如果
lightbulb.image
为零,则该条件将始终返回
true
。因此,它将永远不会执行您的else部分

相当于,

lightbulb.image = bulbOff;

if (lightbulb.image) {

另一方面,如果您对灯泡使用
@property
,请在任何地方使用相同的属性(包括if条件),使其一致。在我的回答中,我已经从
lightbulb.image
改为
self.lightbulb.image

这真的是一个iOS问题吗?iOS没有
NSImage
类。它具有
UIImage
。您在检查分配值和计算条件的条件时使用了赋值运算符,并且始终为真,因此您将始终具有bulbon image。改为将==用于条件。