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文件中。 character
和self
(viking)都有实例变量,setter和getter方法characterHealth
。如果我想让Viking的健康等于一百,我必须写self.characterHealth = 100.0f;
以确保健康没有添加到character
?或者我已经很好了?
谢谢!
答案 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}}