iOS开发--Block
1.什么是Block,block 的作用
ui开发和网络常见功能实现回调,按钮的事件处理方法是回调方法以及网络下载后的回调处理
(1)按钮 target-action 一个方法传入按钮
(2)表格视图 传入指针 self,回调视图控制器中的方法
(3)block 语句块。解决回调,理解为匿名函数,定义在方法里面
2.block的基本使用(语法)
block类型的变量
void (^block名称)(带参数)----参数可为0,1,2。。。。。
定义一个Block的变量
-----
void(^block)();
定义block语句块
block= ^void ()
{
NSLog( @"i am block");
};
block参数和返回值
block捕获外部变量
block注意事项
----很多时候,为强引用可能做成循环引用,这时可用
__weak typeof(self) weakSelf = self;
定义一个弱引用的weakSelf来处理事件。
3.block在开发中应用(oc,ui,网络)
1.返回数据
在第二个页面中,定义Block,并在特定的事件中添加Block。
@property (copy,nonatomic) void (^changeCategory)(NSString *categoryId);
在特定的代码中,加入 if (self.changeCategory) { self.changeCategory(model.categoryId); }
在第一个页面中,执行第二个页面传过来的方法。
在第一个页面中,进入第二个页面的地方,加入
[second setChangeCategory:^(NSString *cate) { _page =1; _catagoryId = cate; //通过传递的数据,执行方法 [self startDownLoadData:_catagoryId]; }];
2.常用Block函数的使用
[UIView animateWithDuration:<#(NSTimeInterval)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>];
第一个参数的时间,第二个参数的执行的动作,比如设置变大
view.frame= cgrectmake(x,y,w,h);
动画变换
view.transform = CGAffineTransformMakeRotation(M_1_PI);
第三个参数的执行后的动作,可用用nil ,^{},^(BOOL finished){}等来接。