A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ios小白成长记 中级黑马   /  2015-12-2 21:43  /  655 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

1 个回复

倒序浏览
排版不能再乱了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马