如果 - 其他和自我问题

时间:2011-07-30 15:51:26

标签: objective-c if-statement

int age == 3;

if (age == 2)
NSLog(@"2");

if (age == 4)
NSLog(@"4");

if (age == 3)
NSLog(@"3");

我想知道放else if而不是有三个if语句是什么意思。

for (GameObject *character in listOfGameObjects) {
if (character.myGameObjectType == kPowerUpTypeHealth) { 
                characterHealth = 100.0f;
        } 
     }

这是在Viking.m文件中。 characterself(viking)都有实例变量,setter和getter方法characterHealth。如果我想让Viking的健康等于一百,我必须写self.characterHealth = 100.0f;以确保健康没有添加到character?或者我已经很好了?

谢谢!

5 个答案:

答案 0 :(得分:1)

问题是如果你有3个if语句,那么所有这些条件都会被检查,因为age只能有1个值,你应该使用

if (age == 2)  //You need the double equals, to check for equality, if you use one equals it will assign the value and the if statement will always be true.

else if (age == 3)

else if (age == 4)

因此,在满足其中一个条件后,将不会检查其他条件,从而节省了处理时间。

关于self,它会双向工作,但是如果characterHealth是@property,则使用self会使用{​​{1}}来帮助它,所以如果你将它声明为@synthetize setter它将retain计数增加1,如果您在没有自我的情况下分配它,则不会增加retain计数。虽然在分配retain时,在这种情况下无关紧要,但只有primitive才有保留计数。

答案 1 :(得分:1)

你的第一个代码片段将始终记录2,4和3,所以它与if / else if / else if序列(它总是记录2,没有别的)非常不同。

如果你用if (a == 2)编写了它,那么与if / else的区别在于你的代码将始终运行三个测试,而else s的那个可以跳过一些。 (还要考虑switch语句。)

对于第二个问题,省略self是安全的。但如果它看起来含糊不清/混淆你,那么就把它放好吧。它不会改变任何东西。

答案 2 :(得分:1)

它们是两个不同的东西。如果你有一个if语句后跟4 else,那么只有那四个条件中的一个会被执行。例如,如果你有

     int age = 2;

 if (age == 2){
     NSLog(@"2");
 }else if (age <=2 ){
    NSLog(@"<=2");
 }else if (age >=2 ){
        NSLog(@">=2");
 }

上述代码的结果为2。这是因为第一个条件是真的,所以我们不需要检查其他条件。但是,如果你正在处理一堆if,请说

    int age = 2;

if (age == 2){
    NSLog(@"2");
}
if (age <=2 ){
   NSLog(@"<=2");
}
if (age >=2 ){
       NSLog(@">=2");
}

结果是2 <=2 >=2。实质上所有陈述都已执行。

答案 3 :(得分:0)

在这种情况下,如果,否则如果没有区别。由于条件是独占的,请考虑这个例子:

if(age > 15)
{ 
    NSLog(@"over 15");
}

if (age < 17)
{
    NSLog(@"under 17");
}

这将打印 超过15岁 17岁以下

如果只打印其中一个,请使用else。

当访问属性self时,假设。它不会改变字符,因为你没有指定character.characterHealth。

答案 4 :(得分:0)

流量控制风格是许多激烈的准宗教论据的主题;)

通常情况下,else if使用else的情况下,您必须在全面if (age == 3) { } else if (age == 4) { } else { } 案例之前捕获有限数量的案例。假如你想检查年龄是否为3,4或其他任何事情:

{{1}}