Block的简单使用

定义Block时,可以对Block的输入参数以及返回值的类型进行定义。可以有输入参数,也可以没有输入参数;可以设置一个输入参数,也可以设置多个参数;可以有返回值,也可以没有返回值。

1、无输入参数+无返回值

这种形式的Block,无需任何输入参数,并且无返回值,一般都是在该Block中完成一些动作,例如在完成一段动画后,执行一段Block,如下所示:

  1. @interface UIView(UIViewAnimationWithBlocks)
  2. + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations;

我们也可以自定义一个无输入参数、无返回值的Block,如下所示:

  1. void (^blockWithOutInputAndOutput) (void) = ^(void){
  2. NSLog(@"block Called!");
  3. };

2、有输入参数+无返回值

这种形式的Block,有输入参数,但无返回值。一般都是在该Block中根据输入参数完成一些动作,例如,在AFNetworking中,当获取到网络反馈的数据后,会调用一个Block,并且把从服务器获取的数据作为参数,传入Block。

  1. - (AFHTTPRequestOperation *)POST:(NSString *)URLString
  2. parameters:(id)parameters
  3. success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
  4. failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
  5. {
  6. AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"POST" URLString:URLString parameters:parameters success:success failure:failure];
  7.  
  8. [self.operationQueue addOperation:operation];
  9.  
  10. return operation;
  11. }

我们也可以自定义一个有输入参数、无返回值的Block,如下所示:

  1. void (^blockWithInput)(int) = ^(int inputNum) {
  2. NSLog(@"blockWithInput Called!");
  3. };

3、有输入参数+有返回值

  • Block定义
  1. int (^blockWithOutputAndInput)(int) = ^(int inputNum) {
  2. NSLog(@"blockWithOutputAndInput Called!");
  3. return inputNum;
  4. };
  • Block调用
  1. int intNumber2 = blockWithOutputAndInput(200);
  2. NSLog(@"blockWithOutputAndInput:%d",intNumber2);

4、有多个输入参数

可以在Block定义中传入多个参数。

  • Block的定义
  1. double (^multiplyTwoValues)(double, double) = ^(double number1, double number2) {
  2. return number1 * number2;
  3. };
  • Block的调用
  1. double doubleNumber = multiplyTwoValues(5.0,5.6);
  2. NSLog(@"multiplyTwoValues: %f",doubleNumber);

5、无输入参数+有返回值

  •  Block的定义
  1. int (^blockWithOutput) (void) = ^(void){
  2. NSLog(@"blockWithOutput Called!");
  3. return 100;
  4. };
  • Block的调用
  1. int intNumber1 = blockWithOutput();
  2. NSLog(@"blockWithOutput:%d", intNumber1);
1.从PANATERM菜单的右端的「其他」选择「Block动作编辑」。 2.在Block动作编辑的列表双击要输入的Block No,会出现输入画面。 3.如果选择要进行的动作,会转到其相对应的输入画面。 4.以相对定位为例 选择相对定位,用编号指定速度、加速度、减速度。 由于该编号会与Block参数编辑的列表中的数据联动, 所以实际的数据请通过block参数编辑设定到选择的编号。 5.关于接下来的设定条件,选择的block动作终了时为0. 想要连续动作时选择3或2,1为无效。 2:如果启动指定block,不用等指定block完成即可启动下一个block。 合成block动作与无限运转中的条件有分歧等情况下 3:如果启动指定block,等指定block完成再启动下一个block 选别动作等连续运转等情况下 6.以电机每旋转一圈的指令脉冲为基准设定移动量 1.blockNo.0 相对定位 动作内容:进行定点动作。 例:10000脉冲的增量式动作 绝对定位对往返动作有用,但相对定位适用于单向的固定尺寸的输送动作。 通过No的变更可进行动作变更,但通过Modbus通信、block数据及速度设定等 可在启动前直接变更参数,也可变更No固定动作。 应用例 :基板切割等的上升及下降的固定尺寸输送 指数・旋转设备角度的固定尺寸输送 门及快门等的开关动作 2.blockNo.0~4 相对定位(绝对值定位也一样)连续3个block动作 动作内容:通过递减计数器设定停止时间进行连续动作。 迁移条件为「3」、指定block终止后迁移至下一个block。 最终block的迁移条件设为0时停止 10000脉冲动作⇒100ms停止⇒10000脉冲动作⇒200ms停止 ⇒-20000脉冲动作⇒停止 应用例 :用选别机等进行一系列弹出动作、 置加工品的一系列动作 降低PLC的负载 0 1 2 3 4 No.0设定+开启STB⇒启动 停止 设定方法 : 实际动作波形 : 6 0 相对定位,速度编号:V0,加速设定编号:AO,减速设定编号:D0,迁移条件:3,相对移动量:10000 1 递减计数器启动,迁移条件:3,计数器设定值[1ms]:100 2 相对定位,速度编号:V0,加速设定编号:AO,减速设定编号:D0,迁移条件:3,相对移动量:10000 3 递减计数器启动,迁移条件:3,计数器设定值[1ms]:200 4 相对定位,速度编号:V0,加速设定编号:AO,减速设定编号:D0,迁移条件:0,相对移动量:-20000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值