iOS关于Block的使用
前言:block使用较之delegate相对简单,代码并没有这么复杂。而block主要用于两个页面之间的传值,因为有时候使用属性传值并不能解决所有问题。
block使用:
1.在需要传值的类(这里就叫A吧)的.h文件中声明:
@property (copy,nonatomic) void (^testBlock)(NSString *testStr);
2.在A的.m文件中引用,比如说点击某个button,在button 的点击事件中:
- (void)testClicked:(UIButton*)sender{
self.testBlock(testStr);//testStr为你需要传到B的值
}
3.在需要值的类(这里简称为B)中调用block
__weak typeof(self) weakSelf = self;
BVC.testBlock = ^(NSString *test){
weakSelf.getTestStr = test;//getTestStr为B类需要赋值的字符串类型,test就是从A中传过来的值。
};
此处weakSelf是为了防止循环引用,如果不需要给B的某个属性赋值,则不会造成循环引用,无需“__weak typeof(self)”。