为什么 __block 不向数组添加值

why does __block not adding values to array

我正在枚举块内的范围并将值存储在数组内。我希望使用 __block 应该将块内的值存储到数组中?

 __block  NSMutableArray *array;
  [indexSet enumerateRangesUsingBlock:^(NSRange range,BOOL * stop ) {

    [array addObject:@(range.location)];
    [array addObject:@(range.length)];

     NSLog(@"location is %d, %ld", range.location, range.length);


}];


NSLog(@"%@",array );

但这导致

location is 4, 2 location is 8, 2 location is 14, 2

和数组

(null)

我希望数组中充满值。

你必须初始化它,一个刚刚声明的数组是nil:

__block  NSMutableArray *array = [NSMutableArray array];

(Swift 编译器会抛出错误...)

__block NSMutableArray *array = [NSMutableArray 数组];

它确实工作正常。

然而,当我将数组声明为 属性 时,块变得多余。