我班上有一些@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
循环相关。
答案 0 :(得分:2)
这不是相同的代码,循环不会更改变量apples
,bananas
和oranges
在循环中,您将排序结果分配给局部变量fruit
,这不会影响apples
,bananas
或oranges
中存储的值的内容
在“展开”代码中,您将排序结果分配给原始变量,因此会覆盖此变量的内容。
此外,我认为你的循环类型Fruit
是错误的,除非apples
,bananas
和oranges
的类型为Fruit
,而不是类型{{ 1}}其余代码所暗示的。
答案 1 :(得分:1)
不,它不一样,也是如此:
NSArray* fruits= [apples sortedArrayUsingComparator: comparator ];
fruits= [bananas sortedArrayUsingComparator: comparator];
fruits= [oranges sortedArrayUsingComparator: comparator];
所以前两种排序没用,因为你只将水果分配给最后排序的数组:oranges。
可能的解决方案
目前尚不清楚你想要达到的目标,也许是这样的:
NSArray* sortedFruits;
for(NSArray* fruit in @[apples, bananas, oranges])
{
NSArray* sorted = [fruit sortedArrayUsingComparator:comparator];
[sortedFruits addObject: sorted];
}
这样你得到一个包含3个项目的数组:苹果,香蕉和橙子的排序结果。