block系列重新整理1
来源:互联网 发布:初学编程怎么学 编辑:程序博客网 时间:2024/03/28 23:15
Main.m
#import <Foundation/Foundation.h>#import "Person.h"int sum(int a, int b){ return a+b;}int main(int argc, const char * argv[]){ @autoreleasepool { //------------------函数指针------------------ //声明一个函数指针 int (*p)(int,int); //对函数指针赋值(实现) p = sum; //调用函数指针 int result = p(1,3); printf("result:%d\n",result); //声明一个block,前面的int是block的返回值类型,myBlock是block的名字或者叫做变量,后面的两个int参数是形式参数 int (^myBlock)(int,int); //实现一个block myBlock = ^(int a,int b){ return a+b; }; int (^myBlock1)(int,int) = ^(int a, int b){ return a-b; }; //调用block result = myBlock(10, 20); printf("myBlock:result:%d\n",result); result = myBlock1(6,3); printf("myBlock1:result:%d\n",result); /*----------------演示void block-----------------*/ //1、声明和实现 void (^voidBlcok)() = ^{ printf("void block"); }; //2、调用 voidBlcok(); /*--------------Person类中与main函数回掉------------*/ Person *ps = [[Person alloc] init]; [ps testMethod:^{ printf("main ps"); }]; result = [ps testMethod1:^int(int a, int b) { return a*b; }]; printf("ps:testMethod1:result:%d\n",result); result = [ps testMethod2:^int(int a, int b) { return a*b; }]; printf("ps:testMethod2:result:%d\n",result); //实现block,最好直接按回车键,如果自己写不太方便,容易出错 PersonBlock personBlock = ^(int a, int b){ return a*b+10; }; result = [ps testMethod2:personBlock]; printf("ps:testMethod2:result:%d\n",result); } return 0;}Person.h
typedef int(^PersonBlock)(int,int);@interface Person : NSObject//不带参数也没有返回值的block作为函数参数- (void)testMethod:(void(^)())block;//返回一个整形,并且有两个整形参数作为blok的参数- (int)testMethod1:(int(^)(int,int))block;//使用PersonBlock类型做为参数- (int)testMethod2:(PersonBlock)block;
Person.m
- (void)testMethod:(void(^)())block{ NSLog(@"Person testMethod"); block();}- (int)testMethod1:(int(^)(int,int))block{ return block(10,10);}- (int)testMethod2:(PersonBlock)block{ return block(30,40);}
0 0
- block系列重新整理1
- block系列重新整理2
- block系列重新整理3:循环引用
- 重新整理-------对象系列.
- Block系列1:初识block
- IOS开发系列——Block专题【整理,部分原创】
- 重新整理
- 重新整理
- iOS 深入浅出block系列(1)
- Block知识整理
- 重新整理思绪
- 重新整理索引信息
- 重新整理主键
- 整理思路,重新计划
- 重新整理反射--基础
- 重新整理反射--特性
- 操作系统重新整理
- Block教程系列
- linux安装jdk
- ubuntu 13.04 安装 JDK
- CodeForces-58A-Chat room
- vmware 下bridge NAT host-only的区别
- leetcode 258 Add Digits(java)
- block系列重新整理1
- linux gcc编译C程序
- Linux下的程序调试
- SQL-向表中插入数据,查询数据
- Hibernte配置以及junit测试笔记
- UVA10465
- block系列重新整理2
- 编译链接过程(一)
- memcached简介及java使用方法