关于blockKit的使用 1 Core文件夹下一些常用的方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qsh18968155492/article/details/52240519
1.NSArray+BlocksKit

- (void)bk_each:(void (^)(id obj))block; 数组遍历 obj是数组内的每一个元素。

- (id)bk_match:(BOOL (^)(id obj))block;

    返回数组元素,一找到就跳出循环


  

- (NSArray *)bk_select:(BOOL (^)(id obj))block;

    继续用上面的代码,用select之后,MM和GG都会输出出来,返回的是数组

- (NSArray *)bk_reject:(BOOL (^)(id obj))block;      

    继续用上面的代码,用reject 返回了1,2,3,4。好嘛,基本就是上面的return之前取反

- (NSArray *)bk_map:(id (^)(id obj))block;    

    每一个元素都会调用一次block,最后返回重新生成的数组,该数组长度与原数组相同,元素由block内返回的值确定,block返回为空则默认成null

     返回:       

- (id)bk_reduce:(id)initial withBlock:(id (^)(id sum, id obj))block;

    这个方法调用的次数等于数组的长度,每次调用完返回的值会存到sum中,并且这个sum最终会赋值给这个函数的返回值,就是说,这就像个递归,在block中可以对数组当前的元素(obj)和sum进行操作,block的最后return的东西就是下一个sum,并且最终函数返回了sum。至于这个initial是什么,这就是sum的初始值。方法用来干什么,有人用来把数组拼接成字符串,当然也可以获取数组中元素的最值什么的,比如,获取某个班C语言成绩最高的同学的信息。别人拼接字符串的代码


- (NSInteger)bk_reduceInteger:(NSInteger)initial withBlock:(NSInteger(^)(NSInteger result, id obj))block;

    判断数组中某元素个数?C语言及格的人数?惊恐

- (CGFloat)bk_reduceFloat:(CGFloat)inital withBlock:(CGFloat(^)(CGFloat result, id obj))block;

     C语言总分?之后算平均分?原谅我理解不够透彻。。。

- (BOOL)bk_any:(BOOL (^)(id obj))block;- (BOOL)bk_none:(BOOL (^)(id obj))block;

    去看.m方法就可以了

- (BOOL)bk_all:(BOOL (^)(id obj))block;

    官方解释:Loops through an array to find whether all objects match the block,遍历数组看是否所有元素匹配block中的条件

- (BOOL)bk_corresponds:(NSArray *)list withBlock:(BOOL (^)(id obj1, id obj2))block;

    对两个数组进行操作,obj1是当前数组中对应位置的元素,obj2是list数组中对应位置的元素,虽然返回值是bool型,但是可以在block里面做些其他的操作,比如引入第三者,把obj1和obj2操作的结果add进一个NSMutableArray里面去。

因为NSDictionary+BlokcsKit 类似,不再话下。

2.NSObject+BK.....

- (void)bk_associateValue:(id)value withKey:(const void *)key;

经常跟 runtime 打交道的人不可能不知道 AssociatedObject ,当我们想要为一个已经存在的类添加属性时,就需要用到 AssociatedObject 为类添加属性,而 BlocksKit 提供了更简单的方法来实现,不需要新建一个分类。

NSObject *test = [[NSObject alloc] init];  
[test bk_associateValue:@ "Draveness"  withKey:@ " name" ];
NSLog(@ "%@" ,[test bk_associatedValueForKey:@ "name" ]);
2016-08-18 16:18:16.262 test[14125:295106] 小MM

- (void)bk_removeAllAssociatedObjects;

    顾名思义,移除添加的临时属性

 NSOBject+ BKBlockExecution 这个类提供的一些接口,可以在任意对象上快速执行线程安全、异步的 block,而且这些 block 也可以在执行之前取消。

- (id)bk_performBlock:(void (^)(id obj))block afterDelay:(NSTimeInterval)delay;

    主线程执行block方法 delay:延迟时间

- (id)bk_performBlockInBackground:(void (^)(id obj))block afterDelay:(NSTimeInterval)delay;

    后台执行block

+ (void)bk_cancelBlock:(id )block

    取消block,至于怎么实现的,自行百度。


3.NSTimer+BlocksKit

+ (NSTimer *)bk_scheduledTimerWithTimeInterval:(NSTimeInterval)inTimeInterval block:(void (^)(NSTimer *timer))inBlock repeats:(BOOL)inRepeats;

    新增定时器并且自动添加到当前的runLoop,inTimeInterval:间隔时间 inRepeats:是否重复,block中执行定时器要准备好的事件,例如一个倒计时,记得在适当的时候移除定时器

+ (NSTimer *)bk_timerWithTimeInterval:(NSTimeInterval)inTimeInterval block:(void (^)(NSTimer *timer))inBlock repeats:(BOOL)inRepeats;

    需要手动将timer加进runLoop


猜你喜欢

转载自blog.csdn.net/qsh18968155492/article/details/52240519
今日推荐