博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
block的使用
阅读量:7002 次
发布时间:2019-06-27

本文共 722 字,大约阅读时间需要 2 分钟。

hot3.png

block块代码,常作为参数传递,如:

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

注意:

1、块内部可以直接修改局部的对象(如stopKey)或者类的属性;

2、块内部不能直接修改局部的基础类型变量,如bool,int等,如想访问,需要在基础类型声明前加上“__block”关键字,注意,block前是两个下划线;

 

API中使用到block的地方有:

NSArray的sortedArrayUsingComparator

参考:

转载于:https://my.oschina.net/u/1174027/blog/187311

你可能感兴趣的文章