1.把block保存成對(duì)象中的屬性,在恰當(dāng)?shù)臅r(shí)刻調(diào)用
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.png
2.把block當(dāng)成方法的參數(shù)使用,block的調(diào)用在是在方法內(nèi)部,在外界寫(xiě)block的實(shí)現(xiàn)(最常用)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.png
3.把block當(dāng)成方法的返回值(比較少用)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.png
示例1
1.在Person類中
@interfacePerson:NSObject@property(nonatomic,copy)void(^myBlock)(int,int);
@end
2.在ViewController類中
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event{inta =12;intb =11;? ?
?Person *p = [[Person alloc] init];?
?? p.myBlock(a,b);
}
示例2
1.在Person類中
@interfacePerson:NSObject- (void)eat:(void(^)())block;
@end
@implementation Person
- (void)eat:(void(^)())block{??
? block();
}
@end
2.在ViewController類中
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event{
// 方式1.先定義,在賦值
//? ? void(^block)() = ^() {
//? ? ? ? NSLog(@"吃東西");
//? ? };
////? ? [p eat:block];
// 方式2.直接寫(xiě)
block[p eat:^{
NSLog(@"吃東西");
? ? }];
}
示例3
1.在Person類中
@interfacePerson:NSObject
- (void(^)(int))run;
@end
@implementation Person
- (void(^)(int))run{
? ? ? ?return^(into){
NSLog(@"跑了--%d米",b);? ?
?};
}
@end
2.在ViewController類中
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event{?
? ? ? ? ? p.run(5);
}