您的位置:首页 > 移动开发 > IOS开发

[10秒学会] - iOS 3种常用形式block

2016-05-10 00:00 447 查看
摘要: iOS 3种常用形式block

1:把block保存到对象中,恰当时机的时候才去调用

[code=plain]// block:ARC使用strong,非ARC使用copy
// block类型:void(^)()
@property (nonatomic, strong) void(^operation)();


[code=plain]- (void)block1
{
Person *p = [[Person alloc] init];

void(^block)() = ^() {
NSLog(@"执行对象中block");
};

p.operation = ^(){

NSLog(@"执行对象中block");
};

p.operation = block;

_p = p;

}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
_p.operation();
}


2.把block当做方法的参数使用,外界不调用,都是方法内部去调用,Block实现交给外界决定.

[code=plain]// name:类型的别名
typedef void(^BlockName)();
// 参数类型:block类型
- (void)eat:(void(^)())block;
//- (void)eat:(BlockName)block;

[code=plain]Person *p = [[Person alloc] init];

void(^block)() = ^{
NSLog(@"吃东西");
};

[p eat:block];

// 传入block给参数的Block赋值
[p eat:^{
NSLog(@"吃东西");
}];


3.把block当做方法的返回值,目的就是为了代替方法.,block交给内部实现,外界不需要知道Block怎么实现,只管调用

[code=plain]- (void(^)(int))run;

Person *p = [[Person alloc] init];

[p run:2];

p.run(2);
void(^run)() = p.run;
run();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息