iOS开发--Block

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){}等来接。 

原文地址:https://www.cnblogs.com/jiangmz/p/4397562.html