NSMutableArray 与 block
来源:互联网 发布:信息化与大数据 编辑:程序博客网 时间:2024/06/03 09:57
如果局部变量是数组或者指针的时候只复制这个指针,两个指针指向同一个地址,block只修改指针上的内容。如:
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外面也一样生效。
- NSMutableArray 与 block
- NSMutableArray,NSArray与NSSet
- NSArray与NSMutableArray
- NSMutableArray与NSArray
- NSMutableArray 与 NSArray 互转
- NSMutableSet 与NSMutableArray
- NSArray与NSMutableArray的区别
- NSArray与NSMutableArray的区别
- NSArray与NSMutableArray的区别
- NSArray与NSMutableArray的区别
- NSArray 与 NSMutableArray 常用方法
- NSMutableArray
- NSMutableArray
- NSMutableArray
- NSMutableArray
- NSMutableArray
- NSMutableArray
- NSString NSMutableString NSArray NSMutableArray Block 分别用哪些修饰?
- 用 python 实现批处理文件
- No plugin found for prefix 'mybatis-genertor' in the current project
- 学习UML实现、泛化、依赖、关联、聚合、组合
- 2-6 Tutorials with python -> RPC
- Java中使用Jedis操作Redis
- NSMutableArray 与 block
- Android ListView中处理嵌套滑动问题,类似ScrollView嵌套ListView
- java内置的进制转换函数
- 基于XMPP协议的手机多方多端即时通讯方案
- Heap Sort
- 3 AMQP 0-9-1 Model Explained
- Nginx配置Restful风格url
- 关于数组
- Xcode中部分快捷键整理