OC中的block主要用來保存一段代碼,在需要的時(shí)候執(zhí)行。
下面是一個(gè)小的例子:
#import "ViewController.h"
@interface ViewController ()
/** myblock(定義一個(gè)block) */
@property(nonatomic,copy) void(^myblock)();
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 如果忘記block怎么寫,可以使用“inlineblock”。oc會(huì)自動(dòng)提示
// <#returnType#>(^<#blockName#>)(<#parameterTypes#>) = ^(<#parameters#>) {
// <#statements#>
// };
__weak UIViewController *self1 = self;
// __block UIViewController *self1 = self;
/** block代碼塊 */
self.myblock = ^{
NSLog(@"我被執(zhí)行了");
self1.view.backgroundColor = [UIColor colorWithRed:arc4random()%10/10.0f green:arc4random()%10/10.0f blue:arc4random()%10/10.0f alpha:1];
};
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
NSLog(@"%s",__func__);
//執(zhí)行block
self.myblock();
}
@end
ps:
- 如果忘記block怎么寫,可以使用“inlineblock”。oc會(huì)自動(dòng)提示哦!
- 屬性要使用copy屬性
- 防止循環(huán)引用,如果在block塊代碼中使用,要使用弱類型,用__weak和__block修飾