博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oc61--block
阅读量:5157 次
发布时间:2019-06-13

本文共 2849 字,大约阅读时间需要 9 分钟。

////  main.m//  Block基本使用:一种数据类型,应用在动画,多线程,集合遍历,网络请求回调。//  用来保存一段代码,在恰当的时候拿出来调用。功能类似于函数。函数不能嵌套定义,block可以,//  函数指针和block是一样的,相当于代码指针。#import 
void printRose(int num){ for (int i = 0; i < num; ++i) { printf(" {@} \n"); printf(" | \n"); printf(" \\|/ \n"); printf(" | \n"); }}int sum(int value1, int value2){ return value1 + value2;}int main(int argc, const char * argv[]) { //printRose(); // void代表指向的函数没有返回值 // ()代表指向的函数没有形参 // (*roseP)代表roseP是一个指向函数的指针// void (*roseP) ();// roseP = printRose;// roseP(); // 定义一个block变量, // block和函数一样,可以没有返回值,也没有形参,也可以没有返回值有形参,也可以有返回值没有形参,也可以有返回值有形参 // 所以, 在定义一个block变量的时候, 也需要告诉该变量将来保存的代码有没有返回值和形参 // void代表block将来保存的代码没有返回值 // ()代表block将来保存的代码没有形参 // (^roseBlock) 代表reseBlock是一个block变量, 可以用于保存一段block代码,把*换成^, void (^roseBlock) (); // 如果block没有参数, 那么^后面的()可以省略 roseBlock = ^(){ printf(" {@} \n"); printf(" | \n"); printf(" \\|/ \n"); printf(" | \n"); }; // 要想执行block保存的代码, 必须调用block才会执行 roseBlock(); roseBlock(); printRose(10); void (*roseP)(int); roseP = printRose; roseP(3); void (^roseBlock1) (int); roseBlock1 = ^(int num){ for (int i = 0; i < num; ++i) { printf(" {@} \n"); printf(" | \n"); printf(" \\|/ \n"); printf(" | \n"); } }; roseBlock1(2); int (*sumP)(int, int); sumP = sum; NSLog(@"sum = %i", sumP(10 , 20)); int (^sumBlock) (int, int); sumBlock =^(int value1, int value2){ return value1 + value2; }; NSLog(@"sum = %i", sumBlock(10, 40)); // block是一种数据类型 int (^printBlock)(int)= ^int (int num){ for (int i=0; i
////  main.m//  Block和typedef//#import 
int sum(int value1, int value2){ return value1 + value2;}int minus(int value1, int value2){ return value1 - value2;}typedef int (*calculte)(int, int);// 注意: 利用typedef给block起别名, 和指向函数的指针一样, block变量的名称就是别名typedef int (^calculteBlock)(int , int);int main(int argc, const char * argv[]) { int (*sumP)(int, int); sumP = sum; calculte sumP1 = sum; NSLog(@"sum = %i", sumP1(20, 10)); int (*minusP)(int, int); minusP = minus; calculte minusP1 = minus; NSLog(@"minus = %i", minusP1(20, 10)); int (^sumBlock)(int , int ); calculteBlock sumBlock1 = ^(int value1, int value2){ return value1 + value2; }; NSLog(@"sum = %i", sumBlock1(20, 10)); int (^minusBlock)(int , int); calculteBlock minusBlock1 = ^(int value1, int value2){ return value1 - value2; }; NSLog(@"minus = %i", minusBlock1(20, 10)); return 0;}

 

转载于:https://www.cnblogs.com/yaowen/p/7436372.html

你可能感兴趣的文章
OO学习总结与体会
查看>>
虚拟机长时间不关造成的问题
查看>>
校门外的树2 contest 树状数组练习 T4
查看>>
面试整理:Python基础
查看>>
Python核心编程——多线程threading和队列
查看>>
Program exited with code **** 相关解释
查看>>
植物大战僵尸中文年度版
查看>>
26、linux 几个C函数,nanosleep,lstat,unlink
查看>>
投标项目的脚本练习2
查看>>
201521123107 《Java程序设计》第9周学习总结
查看>>
Caroline--chochukmo
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
Java SE之正则表达式一:概述
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>