黑马程序员技术交流社区

标题: block的使用 [打印本页]

作者: ios小白成长记    时间: 2015-12-2 21:43
标题: block的使用
block块代码,常作为参数传递,如:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em]13

[size=1em]14

[size=1em][size=1em]NSDictionary *dic = [NSDictionary dictionaryWithObjects:@[@"1",@"2",@"3"] forKeys:@[@"one",@"two",@"three"]];
[size=1em]NSString *stopKey = @"two";
[size=1em]__block BOOL stopEarly = NO;
[size=1em][dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[size=1em]        NSLog(@"%@,%@",key,obj);
[size=1em]         //访问对象类型变量
[size=1em]        if ([key isEqualToString:stopKey]) {
[size=1em]            *stop = YES;
[size=1em]           //访问__block表识的局部类型变量
[size=1em]            stopEarly = YES;
[size=1em]            //直接访问属性
[size=1em]            self.name = @"tom";
[size=1em]        }
[size=1em]    }];




注意:
1、块内部可以直接修改局部的对象(如stopKey)或者类的属性;
2、块内部不能直接修改局部的基础类型变量,如bool,int等,如想访问,需要在基础类型声明前加上“__block”关键字,注意,block前是两个下划线;

API中使用到block的地方有:
NSArray的sortedArrayUsingComparator
作者: ZXY66452    时间: 2015-12-2 22:04
排版不能再乱了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2