问题描述:
ui层的现象就不说了,我的app里说了你也看不到。debug找原因,最终定位到👇一段代码上,在 ios 7、8
版本的手机上,if (!destinationAvailable)
的判断失效
// 确保不重复添加
__block BOOL destinationAvailable = NO;
[self.destinationArray enumerateObjectsUsingBlock:^(Region * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (obj.code == region.code) {
//TODO 提示用户该线路已添加? 还是直接替换原来线路
destinationAvailable = YES;
*stop = YES;
}
}];
if (!destinationAvailable) {
[self.destinationArray addObject:region];
}
解决:
将 __block Boolean destinationAvailable;
改为 __block BOOL destinationAvailable = NO;
分析:
下班回去在看,上班还要码代码呢😢
不过大致可以猜到,在低版本系统中Boolean的初始值不是NO,也不是nil,具体的回去好好研究。猜测和int 在不同系统中位数不同类似。
关联
bool 、BOOL、Boolean 的区别,及其在不同版本中的表现
基本数据类型不同版本中的细微区别