开源地址:https://github.com/zwaldowski/BlocksKit
把很多系统的delegate,方法等 翻新成block 了,对与UIKit 类的,还是比较方便使用的。对于喜欢block的可以考虑试试。(注tableView 这样大个的 delegate 还是算了把骚年)
简单举几个比较常用的栗子
UIControl
[button bk_addEventHandler:^(id sender) {
// do something
} forControlEvents:UIControlEventTouchUpInside];
UITextField
[testField setBk_shouldReturnBlock:^BOOL(UITextField *field) {
// do something like
[self.view endEditing:YES];
return YES;
}];
// 类似的还有其他几个代理
UIView
[view bk_whenTapped:^{
// do something // 直接添加手势,不需要额外代码
}];
// 类似还有双击等
UIWebView
[webView bk_setDidFinishWithErrorBlock:^(UIWebView *webView, NSError *error) {
// do something with error
}];
// 类似还有其他代理
KVO
注:remove 对应出现
- 1 生成indentify
// 生成的 是 用于移除观察的 indentify
NSString *token = [self.label bk_addObserverForKeyPath:@"text" options:NSKeyValueObservingOptionNew task:^(id obj, NSDictionary *change) {
NSLog(@"%@",change);
NSLog(@"%@",obj);
}];
// 移除上面添加的
[self.label bk_removeObserversWithIdentifier:token];
- 2 直接写indentify,使用感觉比较方便,indentify 可以与通知一样写个 常量。
[self.label bk_addObserverForKeyPath:@"test" identifier:@"indentfy" options:NSKeyValueObservingOptionNew task:^(id obj, NSDictionary *change) {
// do something
}];
[self.label bk_removeObserversWithIdentifier:@"indentify"];
- 3 根据参数不同有另外几个
NSTimer
[NSTimer bk_scheduledTimerWithTimeInterval:1 block:^(NSTimer *timer) {
// do
NSLog(@"1");
} repeats:YES];
NSObject (延迟处理)
[self bk_performBlock:^(id obj) {
//do (其实就是 GCD after 方法)
NSLog(@"1");
} onQueue:dispatch_get_global_queue(0, 0) afterDelay:2];
其他的 对数据类型进行 block,感觉很少用。
其他动态block ...
1
网友评论