搜索
简帛阁>技术文章>iOS-block

iOS-block

1.block可以用来保存一段代码,或者用来封装一段代码。--->代码段,代码块。
2.block的标志是^
3.block跟函数很像
可以保存代码;
可以有返回 值;
也可以有行参;
调用方式一样;
4.定义一个block
#pragma mark 不带参数的block
void (^outputblock)() = ^{
NSLog(@"------------");
};
outputblock();
}
5.带行参的block
#pragma mark - 带参数的block
int (^sumblock)(int, int) = ^(int a,int b){
return a+b;
};
int sum = sumblock(23,23);
int sum1 = sumblock(1,2);
NSLog(@"%d",sum1);
NSLog(@"%d",sum);


#pragma mark - 输出n条横线
void(^myblock)(int) = ^(int n){
for (int i = 0; i < n; i++) {
NSLog(@"-----------------");
};
};
myblock(10);
6.如果block没有行参,可以省略后边的小括号。
7.使用typedef来定义一个block的类型
typedef int(^Myblock)(int,int);
Myblock sumblock = ^(int a,int b){

return a+b;
}
Myblock minus = ^(int a,int b){
return a-b;
}

8.block可以访问外边的变量,但不可以修改外部的局部变量

1相关概念在这篇笔记开始之前,我们需要对以下概念有所了解。11操作系统中的栈和堆注:这里所说的堆和栈与数据结构中的堆和栈不是一回事。我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构:
1block可以用来保存一段代码,或者用来封装一段代码。--->代码段,代码块。2block的标志是^3block跟函数很像可以保存代码;可以有返回值;也可以有行参;调用方式一样;4定义一个b
以前看到Block觉得也没什么,不就是类似函数的东西,这东西在C里就是委托,在Java里就是块,有什么稀奇的。但看到一点进阶的内容后,发现这个东西确实有用。所以做下总结。一、块的基本用法块的语法构成
1,为什么需要加__blockARC环境下,一旦Block赋值就会触发copy,__block就会copy到堆上,Block也是__NSMallocBlock。ARC环境下也是存在__NSStackB
iOS进阶Block底层原理一block的本质1block本质上也是一个oc对象,它内部也有一个isa指针2block是封装了函数调用以及函数调用环境的oc对象3block的底层结构Block源码转换
1什么是block对于闭包(block),有很多定义,其中闭包就是能够读取其它函数内部变量的函数,这个定义即接近本质又较好理解。对于刚接触Block的同学,会觉得有些绕,因为我们习惯写这样的程序mai
block的循环引用要注意加__weak避免循环引用__weakViewController*weakSelfself;1block的声明//声明一个blocktypedefNSString*(^WX
ios4开始引入block,就是代码块,结构类c语言基本结构返回值(^block名称)(参数):int(^BlockName)(int):返回值为int型,参数是一个int值的叫BlockName的
一:block的原理是怎样的?本质是什么?block本质上也是一个OC对象,因为它的内部也有个isa指针block是封装了函数调用以及函数调用环境的OC对象接下来我们将通过底层源码来论证上诉两点首先
作者:fengsh998原文地址:http://blogcsdnnet/fengsh998/article/details/38090205转载请注明出处如果觉得文章对你有所帮助,请通过留言或关注微信