block的用法(作为属性、返回值和参数)

block在实际开发中简便易用,主要用在回调,控制器之间的传值等方面。那下面对其用法进行分类

直接上代码:(全部用的无参无返回值)

第一种使用方法(作为属性)在当前使用的文件夹中进行赋值和调用

 1 ZWPerson.h文件中:
 2
 3 #import <Foundation/Foundation.h>
 4 @interface ZWPerson : NSObject
 5 @property (strong, nonatomic)void(^play)();
 6 @end
 7
 8 ViewController.m文件中:
 9 #import "ViewController.h"
10 #import "ZWPerson.h"
11 @interface ViewController ()
12 @property (strong, nonatomic)ZWPerson *p;
13 @end
14 @implementation ViewController
15
16 - (void)viewDidLoad {
17     [super viewDidLoad];
18     ZWPerson *p = [[ZWPerson alloc] init];
19     p.play = ^(){
20         NSLog(@"玩游戏");
21     };
22     _p = p;
23 }
24
25 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
26 {
27     //在当前文件夹中,哪里需要就可以直接调用这个方法
28     _p.play();
29 }
30 @end

第二种使用方法(作为方法参数)主要是外界不能调用,只能在方法内部进行调用,用于回调和传值等

也可以直接在当前文件夹,定义一个方法调用

 1 ZWPerson.h文件中:
 2
 3 #import <Foundation/Foundation.h>
 4 @interface ZWPerson : NSObject
 5
 6 - (void)eat:(void(^)()) bolck;
 7
 8 @end
 9
10 ZWPerson.m文件中:
11 #import "ZWPerson.h"
12 @implementation ZWPerson
13 - (void)eat:(void(^)())block
14 {
15     NSLog(@"吃美味");
16     block();
17 }
18 @end
19
20 ViewController.m文件中:
21 #import "ViewController.h"
22 #import "ZWPerson.h"
23 @interface ViewController ()
24 @property (strong, nonatomic)ZWPerson *p;
25
26 @end
27 @implementation ViewController
28
29 - (void)viewDidLoad {
30     [super viewDidLoad];
31
32     ZWPerson *p = [[ZWPerson alloc] init];
33     [p eat:^{
34         NSLog(@"睡觉");
35     }];
36 }
37 @end

第三种使用方法(作为方法返回值)内部不能调用,只能外界调用,相当于代替了方法!

 1 ZWPerson.h文件中:
 2 #import <Foundation/Foundation.h>
 3 @interface ZWPerson : NSObject
 4 - (void(^)())run;
 5 @end
 6
 7 ZWPerson.m文件中:
 8 #import "ZWPerson.h"
 9 @implementation ZWPerson
10 - (void (^)())run
11 {
12     return ^(){
13         NSLog(@"跑了3公里");
14     };
15 }
16 @end
17
18 ViewController.m文件中:
19 #import "ZWPerson.h"
20 @implementation ZWPerson
21 - (void)viewDidLoad {
22     [super viewDidLoad];
23     ZWPerson *p = [[ZWPerson alloc] init];
24     //可以直接通过点语法调用run,如果有参数,()表示里面可以传参数,
25     p.run();
26 }
时间: 2024-08-26 16:20:15

block的用法(作为属性、返回值和参数)的相关文章

SqlServer 获得存储过程的返回值(参数返回),别玩了output

declare @dingdanid int declare @fanhuizhi int set @dingdanid = 1 exec 检测订单出库资格 @dingdanid ,@fanhuizhi output   (注意别忘了output否则返回值是NULL) select @fanhuizhi create proc dbo.检测订单出库资格 @dingdanID int,     @returnValue int output as -- 输入变量 订单编号 set @returnV

以函数返回值做参数时,函数调用的顺序

环境:vs2013 在下面的代码中 1 //类似于下面的代码 2 3 foo(char*,char*,char*); 4 5 char* str ="A#B#C"; 6 7 foo(strtok(str,"#"),strtok(NULL,"#"),strtok(NULL,"#")); 预计让函数foo得到("A","B","C")的参数,程序编译的时候没问题,但是运行

返回值与参数的泛型一致

今天解决了一个返回值于参数的泛型一致的问题,还不用强制类型转换,呵呵 函数的原型可以这样写 1 public static <T> ClassA<T> build(ClassA<T> classA, String message, String code);

python开发编程基础:函数定义,返回值,参数

一,函数的定义 1,函数mylen叫做函数名 #函数名 #必须由字母下划线数字组成,不能是关键字,不能是数字开头 #函数名还是要有一定的意义能够简单说明函数的功能2,def是关键字 (define)3,():必须写4,函数体内尽量写注释,方便查看代码5,函数的调用:函数名+括号 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 def mylen(): #函数名 5 ''' 6 计算字符串长度的函数 这里写的是注释,方便查看代码 7 ''' 8

函数的定义及其返回值、参数等相关操作

在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下: while True: if cpu利用率 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 if 硬盘使用空间 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 if 内存占用 > 80%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 仔细一看上述代码,i

2.3 函数的返回值、参数与变量

函数可以返回一个值,也可以不返回值. 不返回值是定义为void void show(){ std::cout << "Hello World!"; } 如果返回一个整数 int show(int a,int b){ return a + b; }

Process类调用exe,返回值以及参数空格问题

(方法一)返回值为int fileName为调用的exe路径,入口参数为para,其中多个参数用空格分开,当D:/DD.exe返回值为int类型时. Process p = new Process(); string fileName = @"D:/DD.exe"; string para ="aa bb"; ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(fileName, para); p.S

函数的返回值与参数

一.函数的返回值 1.什么是返回值 返回值是一个函数的处理结果, 2.为什么要有返回值 如果我们需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须有返回值 3.函数的返回值的应用 函数的返回值用return去定义 格式为: return 值 注意: 1.return是一个函数结束的标志,函数内可以有多个return, 但只要执行一次,整个函数就会结束运行 2.return 的返回值无类型限制,即可以是任意数据类型 3.return 的返回值无个数限制,即可以用逗号分隔开多个任意类型的值

Python3学习之路~3.1 函数基本语法及特性、返回值、参数、局部与全局变量

1 函数基本语法及特性 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 语法定义: 1 def sayhi():#函数名 2 print("Hello, I'm nobody!") 3 4 sayhi() #调用函数 可以带参数 1 #下面这段代码 2 a,b = 5,8 3 c = a**b 4 print(c) 5 6 7 #改成用函数写 8 def calc(x,y)