为了加快 for in 语句的效率, 启用了ARC的编译器不会在下面句子中 retain obj
1
| |
下面代码:
1 2 3 4 | |
如果编译通过,在obj = nil 时会release掉obj, 会崩溃。
为了安全,编译器不会让上面语句编译通过。
语句 for (NSObject *obj in array) { … } 不允许修改obj的值。
若要修改obj的值需要显式添加 __strong
1 2 3 4 | |
但这里添加 __strong 影响效率. 应该考虑是否真有必要改变数组元素的值。