NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
__block NSString *a = @"-1";
[array enumerateObjectsUsingBlock:^(id whoCares, NSUInteger idx, BOOL *stop) {
a = [NSString stringWithFormat:@"%@ %d", a, idx];
NSLog(@"%@", a);
}];
NSLog(@"%@", a);
이 코드가 작동
다음 (바보) 예를 아래로 증류 한 내 코드에 문제가있다,하지만 난 블록 내에서 첫 번째 NSLog을 (주석 경우) 코드가 충돌합니다. 그러나 형식 문자열을 다음과 같이 변경하면
a = [NSString stringWithFormat:@"%d", idx];
코드가 NSLog없이 블록 내에서 올바르게 실행됩니다.
여기에 무슨 일이 일어나고 있습니까? 나는 단지 내가 오해하고 있기를 바란다.
그 코드가 모두 있습니까? –
또한보고있는 특정 충돌이 무엇입니까? –
이것은 내가 실제로하고있는 것의 구성 예입니다. 블록으로 열거하는 배열이 있고 변수 자체를 파생시킨 값으로 변수를 재 할당합니다. 마지막 NSLog에서 잘못된 액세스 오류가 발생했습니다. –