我有一种方法,其中有一个条件检查bool值并根据条件执行一些任务。它在调试版本中完美运行,但在发布版本中,bool值始终返回true。
以下是在调试版和发布版中表现不同的方法的示例代码。
-(void)addNotification:(NSMutableDictionary *)dictNotificationData
{
BOOL addNotification;
if ([[dictNotificationData objectForKey:@"id"] integerValue] == 2) {
if ([[dictNotificationData objectForKey:@"isActive"] boolValue]) {
addNotification = YES;
}
}
else {
addNotification = NO;
}
//In the release version this value always return true eventhough it is going in the else part.
if (addNotification) {
//code for local notification
}
}
如果有人知道为什么它在调试和发布版本中表现不同,请告诉我。
答案 0 :(得分:1)
实际上我找到了解决方法。如果我们不提供在我的情况下创建问题的任何东西,则Bool局部变量总是初始化为垃圾值。当我初始化BOOL addNotification = NO;
时,它工作正常。
在这里找到答案。 Default value of BOOL
全部谢谢。
答案 1 :(得分:0)
不是您要问的问题,但在您的代码中,可能会在初始化之前测试addNotification - 如果第二个' if'是假的。
答案 2 :(得分:0)
NSNumber * isSuccessNumber = (NSNumber *)[response objectForKey: @"success"];
if([isSuccessNumber boolValue] == YES) {
}其他 {
}
答案 3 :(得分:0)
可以在设备版本上更改Boolen值。那么这一行的结果是,如果这一行返回0或1,可以改变结果。 [dictNotificationData objectForKey:@"isActive"]
例如,在32位iOS和64位iOS上运行代码。它应该在一个上正确显示“不同”,而不是另一个。
if (different(1, 2)) {
NSLog(@"Different!");
} else {
NSLog(@"Not different.");
}