论NSArray NSMutableArray Count的漂移性

    今天碰到个奇怪的Bug,且看下面代码: 

    //选项数组赋值

    NSMutableArray *tmpAr = [[NSMutableArray alloc]init];

    NSLog(@"%d+++,0 < (tmpAr.count - 100));


    问判断式是真是假?


    按照常理判断,tmpAr.count == 0, 0 - 100 当然小于0,也就说判断式为假,输出结果为“0”。

    但是输出结果却为“1”


    将代码修改为:

    //选项数组赋值

    NSMutableArray *tmpAr = [[NSMutableArray alloc]init];

    int s = tmpAr.count - 1;

    NSLog(@"%d+++,%d,%d",0 < s);


    判断式结果输出为“0”。


    原因不明,但是得出的结论是NSArray/NSMutableArray的Count存在漂移的可能,所以取其Count的时候因该尽量先用int保存一道。

你可能感兴趣的:(论NSArray NSMutableArray Count的漂移性)