ARC对for-in语句的处理

来源:互联网 发布:有偿的网络推广工资 编辑:程序博客网 时间:2024/06/16 06:16
为了加快 for in 语句的效率, 启用了ARC的编译器不会在下面句子中 retain obj
for (NSObject *obj in array) { … }

下面代码:
for (NSObject *obj in array) {     obj = nil;     …}

如果编译通过,在obj = nil 时会release掉obj, 会崩溃。

为了安全,编译器不会让上面语句编译通过。 因此需要显式添加 __strong

for (NSString * __strong str in array) {     str = nil;     …} // 正确

但这里添加 __strong 会影响效率. 应该考虑是否真有必要改变数组元素的值。


转自:ARC对for-in语句的处理(有改动)


0 0