Block系列1:初识block
2024-09-04 16:02:26
//-------1、定义函数----- //1、函数
int sum(int a,int b)
{
return a+b;
}
//------------------2、声明--------- //2、声明函数指针【将sum换成*p就能够了】
int (*p)(int a,int b); //(1)声明block【将sum换成^myBlock就能够了】
int (^myBlock)(int a,int b); //举一反三
void (^myBlock2)(void);
- (void)viewDidLoad
{
[super viewDidLoad]; //---------------------3、赋值【不同之处】------------------
// 3、给函数指针赋值
p = sum;
//(2)将函数赋值给myBlock【^后面加參数列表,以及代码块内容,并以“;”结束】
myBlock = ^(int a,int b)
{
return a+b;
}; //---------------------4、调用------------------
//4、调用
int result = p(3,6);
NSLog(@"%d",result);
//(3)调用
int resultBlock = myBlock(3,6);
NSLog(@"%d",resultBlock); myBlock2 = ^(void)
{
NSLog(@"myBlock2运行了");
}; myBlock2(); //---------------------二、文件之间传值------------------
//block的调用
Person *person = [[Person alloc]init];
//1-2实现block
// ^int(int a, int b) {
// return a+b;
// }
//把person的10和20传到本文件里
//局部变量到block中是常量。如需改变值则须要在声明前面加 __block
__block int number = 10; int resultPs = [person testMethod:^int(int a, int b) {
number = 20;
return a+b+number;
}];
//typedef 方式创建
int resultPs2 = [person testMethod2:^int(int a, int b) {
return a+b;
}];
NSLog(@"resultPs:%d resultPs2:%d",resultPs,resultPs2); } @end
Person.h
#import <Foundation/Foundation.h>
//这里的PersonBlock是类型名字,能够理解为int
typedef int(^PersonBlock) (int a,int b);
@interface Person : NSObject //1-1在參数中声明【int(^)(int a, int b】
- (int)testMethod:( int(^)(int a, int b) )block;
//这里不须要加星号
- (int)testMethod2:(PersonBlock)block;
@end
Person.m
#import "Person.h" @implementation Person
//1-3调用block
- (int)testMethod:( int(^)(int a, int b) )block
{
return block(10,20);
} - (int)testMethod2:(PersonBlock)block
{
return block(1,2);
}
@end
最新文章
- 使用tomcat manager 管理和部署项目
- Openbox简单支持平铺
- Android版-支付宝APP支付
- C#字符串的恒定性
- [转]C#设置WinForm快捷键
- 【智能家居篇】wifi在智能家居中的应用
- CSS 有趣的边框
- Chapter 1. Introduction gradle介绍
- 关于latex的使用随笔
- 面向服务的体系架构SOA
- C#项目开发实践前言
- MVC学习笔记--IEnumerable的用法
- Platt SMO 和遗传算法优化 SVM
- linux 删除占用文件
- PHP处理上传文件信息数组中的文件类型 正确获取
- 2018.09.29 bzoj3166: [Heoi2013]Alo(01trie+双向链表)
- linux环境下编译C++ 程序
- Java程序中的死锁
- PHP 5种方式获取文件后缀名
- 前端基础----JavaScript基础
热门文章
- Welcome-to-Swift-02基本运算符
- iOS学习笔记35-社交分享
- 刷题总结——date(ssoj)
- 报错:java.lang.IllegalStateException
- 洛谷 [P2887] 防晒霜
- window10下用ZIP压缩包安装 mysql 8.0.11
- poj 2112(二分+网络流)
- AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
- sort、dirname、添加环境变量、修改主机名、别名IP、静态路由
- sed实战、find实战、grep实战