oc61--block
// // main.m // Block基本使用:一种数据类型,应用在动画,多线程,集合遍历,网络请求回调。 // 用来保存一段代码,在恰当的时候拿出来调用。功能类似于函数。函数不能嵌套定义,block可以, // 函数指针和block是一样的,相当于代码指针。#import <Foundation/Foundation.h>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<num; ++i) {printf("--------\n");}return 1;};printBlock(2);int a = 10;int b;b = 20;return 0; }
// // main.m // Block和typedef // #import <Foundation/Foundation.h>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
oc61--block相关推荐
- HCIE-Cloud笔试
前言: 目录按照HCIE-Cloud官方培训教材V2.0进行制定,通过笔试考点挂钩HCIE-Cloud官方培训教材V2.0中的知识,相互强化记忆 1.优点:基本笔试的知识分类,是按照该教材的目录大纲分 ...
- Python : IndentationError: expected an indented block
如下图 运行包报错: IndentationError: expected an indented block 处理方法是 问题原因 1冒号后面要跟要写一些内容的, 2 其他位置,或多或少空格的位置不 ...
- ORA-19502: write error on file xxxxx, block number xxxx
错误现象: 在ORACLE 10g下为表空间IGNITE_EGVSQL01增加数据文件时,报如下错误: SQL> ALTER TABLESPACE IGNITE_EGVSQL01 AD ...
- Ruby 之 Block, Proc, Lambda 联系--区别,转载
Ruby 之 Block, Proc, Lambda Block Block 不是对象,是Ruby的语言特性,近似于闭包(Closure). 范例: def meth res= yield ...
- oracle block media recovery,Oracle非归档模式Media Recovery错误之--ORA-26040
11.转储对应的logfile 14:35:48 SYS@ prod>alter system dump logfile '/dsk1/oradata/prod/redo01a.log': Sy ...
- oc 协议 回调 静态成员_OC底层原理探究:Category、关联对象和block本质
1.分类Category的使用 // 给MJPerson类添加分类 @interface MJPerson : NSObject - (void)run; @end@implementation MJ ...
- CUDA之单thread单block多thread单block多thread多block
用简单的立方和归约来举例: //单thread单block #include <stdio.h> #include <stdlib.h> #include <cuda_r ...
- CUDA中grid、block、thread、warp与SM、SP的关系
首先概括一下这几个概念.其中SM(Streaming Multiprocessor)和SP(streaming Processor)是硬件层次的,其中一个SM可以包含多个SP.thread是一个线程, ...
- iOS开发—block介绍
- (void)viewDidLoad {[super viewDidLoad];NSLog(@"我在玩手机");NSLog(@"手机没电了");[self c ...
- Oracle Block浅析2:ITL(Interested Transaction List)
一.ITL(Interested Transaction List): ITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,位于数据块头(block ...
最新文章
- mysql查看数据文件ibdata_如何从 ibdata文件 恢复 MySQL 数据库
- Flex技术中的陷阱
- P1198 [JSOI2008]最大数
- 下一步工作,尽量将代码整理归拢成可以随意组合拆装的代码块。
- 12 月机器学习新书:《可解释机器学习方法的局限》,免费下载!
- a^logbx=x^logba
- Windows Server 2012 R2 安装完勒索病毒后出现的共享和DNS等问题
- 8bit黑白图像的灰度值范围是_浅谈工业CT图像灰度值
- SpringCloud创建Eureka模块
- linux 进程间通信 --- 消息队列 消息队列标识符 --- 同一类型 --- 消息头 --- 消息体
- c语言汉诺塔递归算法_Python进阶之递归函数的用法及其示例
- Arcgis Android 定位
- JUCE 中的音频编解码
- 《凡人修仙传》8.25正式上线链游玩家 | 修仙世界、天降神器
- Oracle SQL基础
- 那些在一个公司死磕了5-10年的人,最后都怎么样了?
- python 修改图片尺寸 留白_python等比压缩图片到固定大小,不足的留白
- 【无标题】问题记录—— (掌阅)
- 50部不可不看的时空/穿越电影
- 【git系列】重命名文件后为何就是untracked状态了 以及 应该如何正规地修改文件呢
热门文章
- 大学生转行IT,零基础非计算机专业可以学会吗?
- 干货丨常用JS前端开发框架有哪些?
- 共用体知识及 I - 共用体练习
- php中global什么意思,php中global和$GLOBALS[]的用法、解释、区别
- boss 计算机应用,Time Boss(电脑使用时间限制软件)官方版
- c++ gzip java.util.zip.gzip_java.util.zip.GZIPInputStream.close()方法示例
- 如果一栋楼起火谁赔偿_太原一辆快递车起火!赶紧看看有你的包裹没?
- 江津2021年高考成绩查询,刚刚,重庆市2020年高考分数线出炉!
- B.最大岛屿(dfs)
- 数字图像识别学习笔记(第二章-数字图像基础(1))