0

私のクラスにはいくつかの@properties(強い)があります。タイプのリンゴ、バナナ、オレンジNSArray*。そして私はこれかどうか疑問に思っています:

for(NSArray* __strong fruit in @[apples, bananas, oranges])     {
    fruit = [fruit sortedArrayUsingComparator:comparator];
}

これと同じです:

apples  = [apples  sortedArrayUsingComparator:comparator];
bananas = [bananas sortedArrayUsingComparator:comparator];
oranges = [oranges sortedArrayUsingComparator:comparator];

comparatorですNSComparator

それらは同じである必要があると思いますが、このコンテキストでループにどのように__strong関連するかはわかりません。for

4

2 に答える 2

2

これは同じコードではありません。ループは変数の値を変更しませapplesbananasoranges

ループでは、sort-resultをローカル変数に割り当てます。これは、、またはfruitに格納されている値の内容には影響しません。applesbananasoranges

'unrolled'コードでは、sort-resultを元の変数に割り当てるため、この変数の内容が上書きされます。

また、ループタイプFruitが間違っていると思います。ただし、、applesがタイプでbananasあり、コードの残りの部分が示唆するタイプではない場合を除きます。orangesFruitNSArray

于 2013-02-07T12:37:03.870 に答える
1

いいえ、同じではありません。同じようになります。

NSArray* fruits= [apples sortedArrayUsingComparator: comparator ];
fruits= [bananas sortedArrayUsingComparator: comparator];
fruits= [oranges sortedArrayUsingComparator: comparator];

したがって、最初の2つの並べ替えは、最後に並べ替えられた配列であるオレンジにのみ果物を割り当てるため、役に立ちません。

考えられる解決策

何を達成したいのかが明確ではありません。おそらく次のようなものです。

NSArray* sortedFruits;
for(NSArray* fruit in @[apples, bananas, oranges])     
{
    NSArray* sorted = [fruit sortedArrayUsingComparator:comparator];
    [sortedFruits addObject: sorted];
}

このようにして、リンゴ、バナナ、オレンジの並べ替え結果の3つの項目を含む配列を取得します。

于 2013-02-07T13:03:43.753 に答える