为了加快 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
影响效率. 应该考虑是否真有必要改变数组元素的值。