Block函数

typedef int
(^MyBlock) (int, int); 
//MyBlock就是这个Block的别名

void test() {

// 定义了一个block,这个block返回值是int类型,接收两个int类型的参数

int (^block) (int,
int) = ^(int
a, int b) {

return a +
b;

};

int a = block(10
,11);

NSLog(@"a
= %d", a);

}

void test2() {

// __block有2个下划线

__block int
c = 15;

// 声明了一个block变量

MyBlock sum = ^(int a,
int b) {

// 如果外部的变量用了__block关键字,就可以在block内部修改这个变量

c = 19;

// block可以访问外面定义的变量

NSLog(@"c = %d", c);

return a +
b;

};

NSLog(@"%d", 
sum(10, 10));

}

#import
<Foundation/Foundation.h>

int sum(int
a, int b) {

return a + b;

}

void test() {

int (^Sum) (int,
int) = ^(int
a, int b) {

return a +
b;

};

// block

int c = Sum(10,
9);

NSLog(@"%d",
c);

// 函数

c = sum(10,
10);

NSLog(@"%d",
c);

int (*sump) (int,
int) = sum;

c = (*sump)(9, 9);

NSLog(@"%d",
c);

}

typedef char
* String;

void test1() {

// 定义了Sum这种Block类型

typedef int
(^Sum) (int, int);

// 定义了sump这种指针类型,这种指针是指向函数的

typedef int
(*Sump) (int, int);

// 定义了一个block变量

Sum sum1 = ^(int
a, int b) {

return a +
b;

};

int c = sum1(10,
10);

NSLog(@"%i",
c);

// 定义一个指针变量p指向sum函数

Sump p = sum;

// c = (*p)(9, 8);

c = p(9, 8);

NSLog(@"%i",
c);

}

int main(int
argc, const char
* argv[])

{

@autoreleasepool
{

test1();

}

return 0;

}

时间: 2024-10-19 02:11:30

Block函数的相关文章

iOS:UIView的block函数实现转场动画---双视图

使用UIView动画函数实现转场动画——双视图 + (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion; 参数说明: –duration:动画的持续时间 –options:转

objc反汇编分析,block函数块为何物?

上一篇向大家介绍了__block变量的反汇编和它的伪代码,本篇函数块block,通常定义成原型(^){},它在反汇编中是什么东西. 我们先定义将要反汇编的例子,为减少篇幅例子采用non-arc环境. NSString* a = @"abc"; NSString* b = [NSString stringWithUTF8String:"abc"]; NSString* c = [@"ab" stringByAppendingString:@&quo

Objective-C:自定义Block函数

Block函数是一种类似于函数指针的函数,程序员只需要把需要操作的代码封装到定义的block中即可,以后需要使用时,直接调用,非常方便.... 举例如下: 自定义一个无参数的block #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //第一种形式:自定义无参数的block函数类型 typedef void (^FirstBlock)(void); //

使用block函数的基本形式

以前从未接触过block函数. 如果在.h头文件中定义的形式如下的话: @property (nonatomic, copy) void(^fontValueChangedBlock)(void); 则应该如此使用block函数 _fontValueChangedBlock = ^(){ [self.fontSmallButton addTarget:self action:@selector(btnFontSmallClicked) forControlEvents:UIControlEven

在block函数中规避错误信息 &quot;capturing self strongly in this block is likely to lead to a retain cycle”

以形如 _fontValueChangedBlock = ^(){ [self.fontSmallButton addTarget:self action:@selector(btnFontSmallClicked) forControlEvents:UIControlEventTouchUpInside]; }; 的代码为例,这个代码运行会报警告."capturing self strongly in this block is likely to lead to a retain cycle

PHP Smarty 模板 自定义函数function和块函数block

自定义函数 function.yangA.php页面 采用插件形式调用 <?php /*  * 文件名    * function.函数名.php    function.yangA.php  * 声明的函数名规则  * smarty_function_函数名()  smarty_function_yangA  * 参数  * 1.数组 array  * 2.smarty  * 模板使用  * <{yangA content="I am Mr.Yang" color=&qu

Smarty 函数讲解

这里给大家总结了几种Smarty 函数并分别详细讲解了.如果你正在学习Smarty  ,希望这篇文章对你有用. html_checkboxes 自定义函数 html_checkboxes 根据给定的数据创建复选按钮组. 该函数可以指定哪些元素被选定. 要么必须指定 values 和 ouput 属性,要么指定 options 替代. 所有的输出与 XHTML 兼容 html_checkbox用来用给定的数据创建checkbox.name表示checkbox的名称,values表示checkbox

Block的引用循环问题 (ARC &amp; non-ARC)

Block实现原理 首先探究下Block的实现原理,由于Objective-C是C语言的超集,既然OC中的NSObject对象其实是由C语言的struct+isa指针实现的,那么Block的内部实现估计也一样,以下三篇Blog对Block的实现机制做了详细研究: A look inside blocks: Episode 1 A look inside blocks: Episode 2 A look inside blocks: Episode 3 虽然实现细节看着头痛,不过发现Block果然

如何在iOS中使用Block

如何在iOS中使用Block Block可以帮助我们组织独立的代码段,并提高复用性和可读性.iOS4在UIKit中引入了该特征.超过100个的Apple API都使用了Block,所以这是一个我们必须开始熟悉的知识. Block是什么样的? 你可以使用^操作符来声明一个Block变量,它表示一个Block的开始. int num1 = 7; int(^aBlock)(int) = ^)int num2) { return num1+nunm2; }; 在如上代码中我们将Block声明为一个变量,