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での不正なアクセスエラーでした。 –