1

興味深いことに、この例では次のようになります。

[array1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
   [array2 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
      //
   }];
}];

内側のブロック変数 (obj、idx、stop) の名前を変更して、外側の変数をシャドウしないようにするベスト プラクティスは何ですか? idx2, stop2 はハッキーに見えますが、最も理にかなっている場合があります (2 つ以上のブロックが関係している場合を考慮してください)。

4

1 に答える 1

0

好きな名前に変更できると思います:

[array1 enumerateObjectsUsingBlock:^(id obj1, NSUInteger idx1, BOOL *stop1) {
   [array2 enumerateObjectsUsingBlock:^(id obj2, NSUInteger idx2, BOOL *stop2) {
       //
   }];
}];

最後に単に数字を追加することが望ましい解決策であるとは言いませんが、それらのパラメーターに好きな名前を付けることができることを示しています。XCode スタブの例に固執する必要はありません。

于 2012-11-20T21:22:59.640 に答える