//-------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

最新文章

  1. 使用tomcat manager 管理和部署项目
  2. Openbox简单支持平铺
  3. Android版-支付宝APP支付
  4. C#字符串的恒定性
  5. [转]C#设置WinForm快捷键
  6. 【智能家居篇】wifi在智能家居中的应用
  7. CSS 有趣的边框
  8. Chapter 1. Introduction gradle介绍
  9. 关于latex的使用随笔
  10. 面向服务的体系架构SOA
  11. C#项目开发实践前言
  12. MVC学习笔记--IEnumerable的用法
  13. Platt SMO 和遗传算法优化 SVM
  14. linux 删除占用文件
  15. PHP处理上传文件信息数组中的文件类型 正确获取
  16. 2018.09.29 bzoj3166: [Heoi2013]Alo(01trie+双向链表)
  17. linux环境下编译C++ 程序
  18. Java程序中的死锁
  19. PHP 5种方式获取文件后缀名
  20. 前端基础----JavaScript基础

热门文章

  1. Welcome-to-Swift-02基本运算符
  2. iOS学习笔记35-社交分享
  3. 刷题总结——date(ssoj)
  4. 报错:java.lang.IllegalStateException
  5. 洛谷 [P2887] 防晒霜
  6. window10下用ZIP压缩包安装 mysql 8.0.11
  7. poj 2112(二分+网络流)
  8. AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
  9. sort、dirname、添加环境变量、修改主机名、别名IP、静态路由
  10. sed实战、find实战、grep实战