代码编织梦想

一、例如:

在main.m文件中,我这儿有1个函数:

import <Foundation/Foundation.h>

- (void)ttt

{

//code;

}

int main()

{

//code;

}

我这个函数里面,有一个block,void (^block1)(),给它赋1个代码段 ^void (){};

import <Foundation/Foundation.h>

- (void)ttt

{

void (^block1)() = ^ {

NSLog(@“-----------”);

NSLog(@“-----------”);

NSLog(@“-----------”);

};

}

int main()

{

//code;

}

这个时候,这个ttt()函数里面,是不是有1个block1变量啊

我能不能把这个block1变量的值,也就是这个代码段:

^ void () {

NSLog(@“-------------”);

NSLog(@“-------------”);

NSLog(@“-------------”);

};

返回给调用者呢?

可以

那怎么写呢

是不是应该改返回值啊

void ttt()

改成

void (^)() ttt()

这个地方,(^)为什么不写名字

因为我们说过,返回值是不是只要写类型就可以了吧

但是这样写会报错,因为编译器看不懂了,所以如果要把block作为返回值的话,就只能用typedef了

typedef void (^NewType)();

NewType ttt(){

void (^block1)()= ^ {

NSLog(@“---------”);

NSLog(@“---------”);

NSLog(@“---------”);

};

return block1

}

如果说你想把block作为返回值的话,这时候就必须用typedef了啊,用这个短类型的啊

typedef void (^NewType)();

二、当将block作为函数的返回值的时候,返回值的类型就必须要使用typedef定义的短类型

这个时候,怎么去执行呢,执行就很简单了,在main.m文件中

调用这个ttt();函数,这个函数是不是返回block类型的啊,也就是NewType类型的啊

好,来一个type接收一下就可以了

NewType type = ttt();

这个时候,ttt()这个函数就会返回这个block的值

然后把这个block的值赋给type

然后,执行一下这个type里面的代码

type();

输出:

-----------------

-----------------

-----------------

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/madoca/article/details/126982247

黑马程序员--objective-c语言基础知识--特有语法-爱代码爱编程

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- 分类(Category) 一、 在不改变原来类模型的前提下,给类扩充方法,除了可以利用继承特性设计一个子类外,还可以通过设置分类来

objective-c语言-爱代码爱编程

一、Objective-C语言简介 Objective-C是面向对象的语言 由Brad Cox基于Smalltalk改进而来,遵从ANSI C标准C语法,同时使用了Smalltalk的方法,在运行时可以灵活处理所有事情 Objective-C语言的优点 运行时非常灵活:   Dynamic Binding动态绑定   Dynamic Typin

objective-c语言——block块-爱代码爱编程

#import "ViewController.h" @interface ViewController () @end int num = 100; @implementation ViewController - (void)viewDidLoad {     [super viewDidLoa

objective-c语言中的数据类型-爱代码爱编程

"一:C语言中的数据类型 1> 基本数据类型 1,整型   int short long unsigned signed 2,浮点型 float(单精度浮点型) double(双精度浮点型) 3,字符型 char 2> 构造类型 1,数组 2,结构体 3,枚举 3> 空类型 vo

Objective-C的lambda表达式block-爱代码爱编程

本篇博文介绍iOS4引入的C语言扩展功能的“Blocks”。如果学习过lambda表达式,那么对这个知识在使用上并不难。但是这次介绍的blocks和C++中lambda表达式又一些区别。 (博文较长,层层递进的方式阐述,如有需要,选择阅读) 文章目录 1、 面试题2、 Blocks模式2.1 block语法2.2 block简单理解2.3

Objective-C中的block-爱代码爱编程

在Objective-C的开发过程中,我们经常用到block,这里就简单总结一下block在Objective-C的几种使用方式。 1、简单介绍一下block 代码块Block是对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量、作为参数、作为返回值,特殊地,Block还可以保存一段代码,在需要的时候调用,目前B

Objective-C语言入门-爱代码爱编程

文章目录 1.OC对象的本质2.委托(delegate)3. block概述Block的定义与使用Block与外界变量weakSelf和strongSelf4.property c++开发找实习,结果找到了WXG-iOS客户端开发,记录一下学习经历。 iOS开发基本还是使用Objective-C语言,该语言被认为是C语言的超集,赋予了C语言面

c语言view函数,objective-c中模拟c语言的函数调用方法-爱代码爱编程

objective-c中模拟c语言的函数调用方法 在很多第三方objc库中,你会看到一些很优雅的函数调用方法,例如masonry中,定义约束的函数 [row1 mas_makeConstraints:^(MASConstraintMaker *make) { make.right.and.left.equalTo(view); make.hei

objective-c语言特点及基础(相较于C语言)-爱代码爱编程

一、简介 Objective-C是一种以C为基础,并结合Smalltalk特征扩充出来的面向对象语言,该语言于20世纪80年代初由 Brad J.Cox 创建。1988年,NeXT 公司获得了Objective-C语言的授权; 1996 年,Apple 公司收购了 NeXT 公司,这样 Objective-C 语言就变成了 Apple 公司的"御用"编程

【block是1个数据类型 objective-c语言】_清风清晨的博客-爱代码爱编程

一、之前说过,Objective-C在C的基础上,做了3件事情: 1.新增了1些面向对象的语法 2.将C语言中的复杂的、繁琐的语法,替换的更简单,比如#include替换为#import,printf函数替换为NSLog

【关于block块的内部访问外部变量的问题 objective-c语言】_清风清晨的博客-爱代码爱编程

一、例如,我现在声明1个无参数、无返回值的block变量 main.m文件中 #import <Foundation/Foundation.h> typedef void (^NewType)(); in

【block作为函数的参数 objective-c语言】_清风清晨的博客-爱代码爱编程

一、block作为函数的参数 1.block是1个数据类型,能不能作为函数的参数呢,可以 2.例如,我有1个test函数,现在我要给它定义1个参数,定义1个block类型的参数,什么样的block呢,无参数、无返回值的b

【block作为函数参数的应用案例之一 objective-c语言】_清风清晨的博客-爱代码爱编程

一、例如,有一个数组: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { char *countries[]