我的课有一些@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
循环在这种情况下的关系。
应该指出,第一个例子是一个水果圈。 –
将循环变量声明为'__strong'的唯一意义在于它允许您修改循环变量。默认情况下,在快速枚举循环条件下声明的循环变量是'__weak'和* immutable *,参见http://stackoverflow.com/questions/14209076/setting-objects-to-nil-during-fast-enumeration/14209189#14209189。 - 但你只修改本地变量,而不是原始数组,正如答案中所述。 –