有一个简单的布尔问题

时间:2011-01-04 19:39:33

标签: iphone objective-c

我有一些非常简单的代码可以检查我的bool是否= = YES但是它还没有输入。

NSLog(@"boool %d",self.arrayAlreadyPopulated );

if (self.arrayAlreadyPopulated == YES) 
{
Match *aMatch = [appDelegate.matchScoresArray objectAtIndex:(numMatchCounter)];
aMatch.teamName1 = TeamNameHolder;
}
else 
{

Match *aMatch = [[Match alloc] init];
aMatch.teamName1 = TeamNameHolder;
    [appDelegate.matchScoresArray addObject:aMatch];
[aMatch release];
}

顶部的调试表明self.arrayAlreadyPopulated的值在第二遍时应该是1。

但它永远不会进入第一部分,而是跳到'其他'

我无法看到我的生活是什么问题。 -.-

有人能告诉我吗?

由于 -Code

编辑声明代码

BOOL arrayAlreadyPopulated;
@property (nonatomic) BOOL arrayAlreadyPopulated;

@synthesize arrayAlreadyPopulated;

3 个答案:

答案 0 :(得分:2)

请勿将BOOLYESNO进行比较。它们可以包含非NO但不等于YES的值。相反,直接在if语句中使用布尔表达式:

if (self.arrayAlreadyPopulated)
{
    // ...
}

答案 1 :(得分:1)

arrayAlreadyPopulated实际上可能不是BOOL。例如,如果它是浮点数,%d仍然会打印1。

答案 2 :(得分:0)

检查并仔细检查您是否将值arrayAlreadyPopulated始终指定为self.arrayAlreadyPopulated = YES,而不只是arrayAlreadyPopulated = YES

有时,使用属性v / s,属性的可关联变量并不总是按照您期望的方式运行。使用“变量”名称如果您使用它来通过[variable release]语句释放内存,就像您在任何Apple示例代码中找到它一样。在所有其他情况下,请使用self.propertyname