__block与__weak的区别理解
来源:互联网 发布:excel筛选两表重复数据 编辑:程序博客网 时间:2024/05/29 18:22
NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"a",@"b",@"abc",nil]; NSMutableArray *mArrayCount = [NSMutableArray arrayWithCapacity:1]; [mArray enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock: ^(id obj,NSUInteger idx, BOOL *stop){ [mArrayCount addObject:[NSNumber numberWithInt:[obj length]]]; }]; NSLog(@"%@",mArrayCount);
例子里面确实没有修改mArrayCount这个局部变量啊。mArrayCount是一个指针,指向一个可变长度的数组。在block里面,并没有修改这个指针,而是修改了这个指针指向的数组。换句话说,mArrayCount是一个整数,保存的是一块内存区域的地址,在block里,并没有改变这个地址,而是读取出这个地址,然后去操作这块地址空间的内容。
这是允许的,因为声明block的时候实际上是把当时的临时变量又复制了一份,在block里即使修改了这些复制的变量,也不影响外面的原始变量。即所谓的闭包。但是当变量是一个指针的时候,block里只是复制了一份这个指针,两个指针指向同一个地址。所以,在block里面对指针指向内容做的修改,在block外面也一样生效
__block与__weak的区别
0 0
- __block 与 __weak的区别理解
- __block 与 __weak的区别理解
- __block与__weak的区别理解
- __block 与 __weak的区别理解
- __block 与 __weak的区别理解
- __block 与 __weak的区别理解
- __block 与 __weak的区别理解
- __block 与 __weak的区别理解 补充
- __block 与 __weak的区别理解
- __weak 与 __block的区别理解
- __weak与__block的区别
- iOS学习笔记29-__block 与 __weak的区别理解
- iOS开发之 __block 与 __weak的区别理解
- __weak与__block区别
- __weak与__block区别
- __block 与 __weak的区别与使用
- __weak与__block修饰符的区别
- __weak与__block区别,深层理解两者区别
- yii2 邮件发送笔记
- 2188 最长上升子序列
- Hangover POJ 1003
- Android JNI 学习笔记
- Spring之LoadTimeWeaver——一个需求引发的思考
- __block与__weak的区别理解
- 拼音翻译成阿拉伯数字
- SQL ROUND 的用法(是否四舍五入)
- GridView嵌套应用实例
- 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
- android的序列化接口Parcelable
- 关于使用CKplayer播放m3u8视频出现没有视频的问题分析
- hbase增加backup master
- JVM学习笔记--类文件结构