为什么 __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 数组];
它确实工作正常。
然而,当我将数组声明为 属性 时,块变得多余。
我正在枚举块内的范围并将值存储在数组内。我希望使用 __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 数组];
它确实工作正常。
然而,当我将数组声明为 属性 时,块变得多余。