oc中的block

#import <Foundation/Foundation.h>

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

{

@autoreleasepool {

//block的规则

//返回值类型(^block名称)(形参参数列表)一般形参变量名不用写=
^返回值类型(实参数列表){block体};

// int (^block3)(int) =
^(int)(int x){ return 101;};

//int
result=block(3);调用

//注意要访问修改局部变量的话,需要在该变量前加__block关键字

__block int
n=10;

void(^block1)(void)=^(void)

{

n=100;

NSLog(@"%d\n",n);

};

block1();

int
(^sum)(int,int)=^int (int
x,int y)

{

return x+y;

};

int
result=sum(3,5);

NSLog(@"%d",result);

}

oc中的block,布布扣,bubuko.com

时间: 2024-08-05 07:06:22

oc中的block的相关文章

OC中的Block数据类型和protocol

Block数据类型 作用:封装一段代码,可以再任何地方执行. 定义格式:返回值类型 (^变量名)(传入的形参的数据类型) = ^(传入代码块的参数){代码块}; 调用方法:变量名(实参): block其实与函数差不多,他们的相同之处有: 1.都可以保存代码 2.都可以有返回值 3.都有形参和实参 4.调用方式一样 使用注意: 1.Block内部可以访问外面的成员变量 2.默认情况下,Block内部不能修改外面的局部变量 3.如果一定要在Block内部修改外面的局部变量,可以再该局部变量前加__b

OC 中的block使用

在iOS的开发过程中,使用块的地方很多也很方便,但是在使用块的过程中要注意内存泄露的问题. 在块创建的时候,会对块内的所有对象的引用计数加一,直到块销毁,所以在使用块的过程中需要我们进行处理,在这里以AFNetworking的代码举例,代码如下: __weak __typeof(self)weakSelf = self; self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{

OC 中的block存储位置

一.block块的存储位置(block块入口地址):可能存放在2个地方:代码区.堆区(程序分5个区,还有常量区.全局区和栈区). 详细介绍: 情况1:代码区 不访问处于栈区的变量(例如局部变量),且不访问处于堆区的变量(例如alloc创建的对象).也就是说访问全局变量也可以. /** 没有访问任何变量 */ int main(int argc, char * argv[]) { void (^block)(void) = ^{ NSLog(@"==="); }; block(); }

oc中的block使用心得

typedef void (^ simpleBlock) (void); typedef double (^multiplyTwoValues)(double, double); typedef void (^ simpleTestBlock) (int ,int); @implementation TJAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDic

关于OC中的block自己的一些理解(二)

一.block延伸:页面间反向传值 1)first页面的代码 - (void)viewDidLoad { [super viewDidLoad]; [self setupBtn]; self.view.backgroundColor = [UIColor whiteColor]; } - (void)setupBtn { UIButton * btn = [[UIButton alloc]init]; [btn addTarget:self action:@selector(buttonClic

iOS oc中的 block使用

int (^myBlock)(NSString *) = ^(NSString *string){ return [string intValue]; } ; int count = 0; int  块的类型   ^声明一个myBlock块 (NSString)有一个参数确定参数类型 ^(NSString *string){ return [string intValue]:}块对象的语法结构 也就是赋给myBlock的值 string参数名 {return [string intValue]}

Objective-C中的Block(闭包)

学习OC有接触到一个新词Block(个人感觉又是一个牛气冲天的词),但不是新的概念,不是新的东西.学过Javascript的小伙伴对闭包应该不陌生吧~学过PHP的应该也不陌生,在PHP5.3版本以后也支持闭包, 也就是OC中所提到的Block. 到底什么是闭包或者block呢?用大白话说就是匿名函数,也就是在函数中可以包含这函数.就是在函数中可以定义匿名函数然后在函数中调用.学习OC中的block之前也小担心一下,Block在OC中属于高级的部分,心里有又有个疑问:学起来难不难?看过Block的

OC中分类、类扩展、Block、协议(由协议引出的代理模式)

一: 分类(Category) 1>Category的概念:就是在不改变原来类的基础上,为类增加一些方法 (1,可以为库中定义的类增加方法:2,可以给自己定义的类增加方           法)仅仅是方法哦 好处:一个类可以有多个文件,编译器会将这些文件按一个类除了,便于团队合作. 2> 代码格式: 自定义类中加分类 Person类 #import "Person.h" @interface Person : NSObject - (void)sayHi; @end @im

OC中NSString和block的属性时copy,而不用retain

OC中NSString和block的属性时copy,而不用retain   而容器类使用retain NSString 为什么要使用copy,而不是retain 1.首先如果使用retain,只是引用计数+1,并没有生成新的对象,所以效率好 2.但是使用copy安全.因为NSString为NSMutableString 的基类,如果将NSMutableString 以retain的形式赋值给NSString后,后续修改NSMutableString会导致NSString内容的变化,这通常不是我们