歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> iOS中判斷數組長度問題

iOS中判斷數組長度問題

日期:2017/3/1 10:17:34   编辑:Linux編程

昨天同事在項目中,對一個數組長度進行判斷的時候,出現了一個詭異的情況。

在判讀數組長度是否大於6時,使用數組長度減去6進行判斷,代碼如下:

  1. //初始化數據
  2. NSMutableArray *listArray = [[NSMutableArray alloc] initWithObjects:@"cell1",@"test2", nil];
  3. if ([listArray count] - 6 > 0) {
  4. NSLog(@"listArray數組的長度大於6");//即使數組長度為2也會打印出信息
  5. }

翻看數組NSArray的API後發現,數組的count屬性類型是NSUInteger,對應C語言中的無符號整型,當一個整型類型的數(int 類型)和無符號整型(unsigned int類型)的數相做加減運算時,運算的結果是一個無符號整型(unsigned int)類型,所以,在上面的示例中, [listArray count] - 6 > 0 的值是大於0的,所以在進行無符號整型(unsiged int)和整型(int)的運算的時候,需要特別注意,上面代碼的正確寫法應該如下:

  1. //初始化數據
  2. NSMutableArray *listArray = [[NSMutableArray alloc] initWithObjects:@"cell1",@"test2", nil];
  1. int judgeCase = [listArray count] - 6 ;//將unsiged類型的值強制轉化成int類型
  2. if (judgeCase > 0) {
  3. NSLog(@"listArray數組的長度大於6");//即使數組長度為2也會打印出信息
  4. }
Copyright © Linux教程網 All Rights Reserved