0

我正在枚举块内的范围并将值存储在数组中。我希望使用 __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 );

但这导致

位置是 4, 2 位置是 8, 2 位置是 14, 2

对于数组

(无效的)

我希望数组充满值。

4

2 回答 2

1

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

__block  NSMutableArray *array = [NSMutableArray array];

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

于 2018-04-26T08:18:16.677 回答
0

__block NSMutableArray *array = [NSMutableArray 数组];

它工作正常。

但是,当我将数组声明为属性时,块就变得多余了。

于 2018-04-27T06:33:24.350 回答