E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
iOS-Block
iOS-Block
Blocks的学习Block的分类Block根据其类型可以分为三类:全局Block(NSGlobalBlock)栈Block(NSMallocBlock)堆Block(NSStackBlock)而其区分的规则为:如果没有引用局部变量,或者只引用了静态变量和全局变量,则为全局Block,如果内部有使用局部变量,如果有被强指针引用过,就是堆Block,如果没有则为栈Block。-(void)func2
zdsey
·
2023-07-19 09:40
ios
iOS-Block
源码分析
前言iOS-深入研究Block这篇文章结合实例介绍了Block的类型,循环引用等问题,接着我们通过Block的源码分析一下,它的底层是怎么操作的?1通过Clang分析BlockBlock通过Clang将会编译成什么样的结构呢,它的invoke,isa,签名的原理是什么,我们来研究下。#include"stdio.h"intmain(){//__Block_byref_a_0inta=18;inta
似水流年_9ebe
·
2023-04-07 18:36
iOS-block
(一)-初探
基本概念什么是block?《Objective-C高级编程》这本书里是这样定义的:带有自动变量(局部变量)的匿名函数。顾名思义,匿名函数就是没有名称的函数。也被称为闭包(closure)或者Anonymousfunction。我们可以理解为block就是一个没有名称的函数。定义block的方式和定义函数的方式是相似的,而block还可以作为参数使用。当block被调用其块内的代码才会被执行。定义根
xxxxxxxx_123
·
2023-04-03 00:07
iOS-Block
知识点整理
Block.pngblock介绍截获变量__block修饰符Block的内存管理Block的循环引用为什么weakSelf需要配合strongself使用Block介绍Block是将函数及其执行上下文封装起来的对象Block调用即是函数调用image.pngimage.png截获变量先看一个问题//全局变量intglobal_var=4;//静态全局变量staticintstatic_global
木子奕
·
2023-03-24 23:03
IOS-Block
Block初探blcok的分类不同关键字修饰的变量auto和static在OC中有个默认的关键字auto,在我们创建局部变量的时候,会默认在局部变量前加上auto关键字进行修饰。auto关键字的含义就是它所修饰的变量会自动释放,也表示着它所修饰的变量会存放到栈空间,系统会自动对其进行释放。__NSGlobalBlock__全局block,block没有访问外部变量,访问全局的变量,访问静态变量的b
浪的出名
·
2023-03-19 06:49
iOS-block
的使用
iOS中block比较常用,但是又和OC的语法显得有点格格不入,难于理解。以下是我个人初步的理解,供查阅。1.block的声明//声明一个blocktypedefNSString*(^WXYTestBlock)(NSString*name,intage);以上声明了一个名字叫做WXYTestBlock的block,参数为一个字符串类型的name和一个int类型的age,返回值为NSString。当
沃妮马
·
2023-03-16 20:00
iOS-block
Block是一种数据类型(就代表可以做变量做参数),用来封装代码.函数不能写在方法内部函数内部但是Block可以定义Block类型的变量的格式返回值类型(^block变量名称)(形参列表)实现格式^返回值类型(形参列表){语句}定义一个无参数无返回值的Block类型变量void(^myBlock)()=^void(){NSLog(@"定义一个无参数无返回值的Block");};myBlock();
指头飞血
·
2023-03-11 22:30
iOS-Block
本质
iOS-Block
本质参考篇:
iOS-Block
浅谈前言:本文简述Block本质,如有错误请留言指正。第一部分:Block本质Q:什么是Block,Block的本质是什么?
super_2e20
·
2023-02-16 22:34
iOS-block
捕获变量与循环引用问题
block捕获变量一般,block代码块内使用的外部变量有3种类型。-一般的局部变量默认是auto修饰(自动变量)离开作用域就销毁。1.局部变量auto(自动变量)intage=20;//或autointage=20;auto可省略void(^block)(void)=^{NSLog(@"ageis%d",age);};age=25;block();//调用运行后,打印的是20。可见,直接把age
Arthur澪
·
2023-02-05 12:35
iOS-block
(二)-底层分析
前言上一篇我们讲完了block的基础知识,这一篇我们就来看看block的底层原理。话不多说,我们创建一个testBlock.c的文件,输入以下代码:#include"stdio.h"intmain(){inta=5;void(^block)(void)=^{printf("BLOCK_TEST==%d",a);};block();return0;}然后对代码编译成.cpp文件,此时main函数就变
tangxc
·
2021-06-21 20:09
iOS-block
详解
`1、第一部分定义和使用Block,-(void)viewDidLoad{[superviewDidLoad];//(1)定义无参无返回值的Blockvoid(^printBlock)()=^(){printf("nonumber");};printBlock();printBlock(9);intmutiplier=7;//(3)定义名为myBlock的代码块,返回值类型为intint(^myB
亦晴工作室
·
2021-05-08 01:14
iOS-block
1.相关概念在这篇笔记开始之前,我们需要对以下概念有所了解。1.1操作系统中的栈和堆注:这里所说的堆和栈与数据结构中的堆和栈不是一回事。我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构:block1.jpg栈区(stack):由系统自动分配,一般存放函数参数值、局部变量的值等。由编译器自动创建与释放。其操作方式类似于数据结构中的栈,即后进先出、先进后出的原则。例如:在函数中申明一
wangjianjun0730
·
2021-05-04 16:16
iOS-block
三种应用场景
1.把block保存成对象中的属性,在恰当的时刻调用1.png2.把block当成方法的参数使用,block的调用在是在方法内部,在外界写block的实现(最常用)2.png3.把block当成方法的返回值(比较少用)3.png示例11.在Person类中@interfacePerson:NSObject@property(nonatomic,strong)void(^myBlock)(int,i
船长_
·
2021-05-03 15:18
iOS-Block
本质
Block本质上是一个OC对象,从底层结构就可以看的出来内部也有一个isa指针。Block封装了函数调用,以及函数调用环境(参数,访问外面的值)的OC对象。可以写一个简单的block,通过clang编译器生成对应的.cpp文件来看到对应的block底层。终端切到block代码对应文件的目录下,敲如下:xcrun-sdkiphoneosclang-archarm64-rewrite-objcbloc
米拉_Recorder
·
2020-10-23 01:08
iOS-Block
和变量的内存管理(二)
了解了block的实现,我们接着来聊聊block和变量的内存管理。本文将介绍可写变量block的内存段__block变量的内存段等内容看完本文会对block和变量的内存管理有更加清晰的认识。上篇文章举了个例子,在block内获取了一个外部的局部变量,可以读取,但无法进行写入的修改操作。在C语言中有三种类型的变量,可在block内进行读写操作全局变量全局静态变量静态变量全局变量和全局静态变量由于作用
zhz459880251
·
2020-09-14 21:27
ios平台
iOS-Block
的使用
首先,我们要知道什么是Block。什么是Block?用一句话说就是带有自动变量的匿名函数。那什么是匿名函数和自动变量呢?匿名函数顾名思义就是不带名字的函数,在C语言中不允许这样的方法存在,而在OC中的Block则可以用指针来直接调用一个函数,但虽说如此我们还是需要知道指针的名称。自动变量在Block中的具体表现就是截获自动变量,来看下面这一段代码:intb=0;void(^blo)()=^{NSL
weixin_30729609
·
2020-09-14 20:23
c/c++
iOS-Block
源码分析
古巷悠悠岁月深,青石老街印旧痕今夜小楼听风雨,不见当年伞下人前言Block作为iOS中老生常谈的问题,也是面试中面试官比较喜欢问的一个问题,下面我们通过源码查看block的底层实现原理什么是BlockBlock:将函数及其上下文组装起来的对象Block本质就是一个对象创建一个PHJBlock类@implementationPHJBlock-(void)test{inta=10;void(^bloc
Jieyi
·
2020-08-22 12:07
objective-c
block
ios
iOS-Block
变量捕获
block对变量的捕获1:可以捕获不可以修改变量局部变量2:可以捕获且可以修改变量全局变量静态变量__block修饰的局部变量原理分析:1.局部变量为什么可以被捕获确不能修改inta=10;void(^blcok)()=[^{NSLog(@"%d",a);}copy];a=20;blcok();//log:a=10结果应该大家都知道,但是为什么会这样呢?我们用clang转化之后看看局部变量访问.p
litt1err
·
2020-07-14 22:34
iOS-block
三种应用场景
1.把block保存成对象中的属性,在恰当的时刻调用1.png2.把block当成方法的参数使用,block的调用在是在方法内部,在外界写block的实现(最常用)2.png3.把block当成方法的返回值(比较少用)3.png示例11.在Person类中@interfacePerson:NSObject@property(nonatomic,strong)void(^myBlock)(int,i
MOKA
·
2020-07-02 11:25
Block
iOS-block
的演示
会如何定义一个blockblcok变量的初始化简化block的定义会在block内部访问与修改外部变量会将block作为参数传递知道block在哪1.如何定义一个block?1).block是1个数据类型,我们可以声明block类型的变量.block类型的变量中专门来存储1段代码的.这段代码可以返回值可以有参数.2).block类型的变量,虽然是用来存储1段代码的.但是,1个block变量中并不是
信念的旗帜
·
2020-04-13 09:28
iOS-block
一.查看block内部实现1.编写block代码void(^DemoBlock)(int,int)=^(inta,intb){NSLog(@"%d",a+b);};DemoBlock(1,3);输出:2019-01-1413:01:47.104iOSWorld[1324:103701]4使用xcrun-sdkiphoneosclang-archarm64-rewrite-objc-fobjc-ar
globalYK
·
2020-04-10 07:43
iOS-block
三种应用场景
1.把block保存成对象中的属性,在恰当的时刻调用1.png2.把block当成方法的参数使用,block的调用在是在方法内部,在外界写block的实现(最常用)2.png3.把block当成方法的返回值(比较少用)3.png示例11.在Person类中@interfacePerson:NSObject@property(nonatomic,copy)void(^myBlock)(int,int
蔡林林
·
2020-04-02 20:39
iOS-Block
block已经成为我在iOS编写中最为常用的回调方法,它简单便捷,取代了代理大部分的工作,今天整理一下,只需要跟着敲一遍就会了,如果学过C的话,对照函数,把*变成^就差不多了.void(^myblocks)(void)=NULL;myblocks=^(void){NSLog(@"inmyblocks");};NSLog(@"beforemyblocks");myblocks();NSLog(@"a
存在即是美
·
2020-03-31 04:16
iOS-block
的定义
变量returnType(^blockName)(parameterTypes)=^returnType(parameters){...};Asaproperty:属性@property(nonatomic,copy,nullability)returnType(^blockName)(parameterTypes);Asamethodparameter:方法-(void)someMethodTh
linbj
·
2020-03-14 13:52
iOS-Block
面试题block的原理是怎样的?本质是什么?封装了函数调用以及调用环境的OC对象__block的作用是什么?有什么使用注意点?block的属性修饰词为什么是copy?使用block有哪些使用注意?block一旦没有进行copy操作,就不会在堆上使用注意:循环引用问题block在修改NSMutableArray,需不需要添加__block?BlockBlock本质block本质上也是一个OC对象,它
e297b14c9e53
·
2020-03-13 04:42
iOS-Block
中 为何使用 weakSelf 和 strongSelf
目录本篇幅代码会有些多,需要读者耐心看完。一block循环引用讲解详细请移步至iOS-底层原理(11)-block-循环引用详解,该文章详细讲解了有关block引用的原理及解决思路。原理就是相互引用image.png二为何使用weakSelf可以解决循环引用__weak:不会产生强引用,指向的对象销毁时,会自动让指针置为nil__unsafe_unretained:不会产生强引用,不安全,指向的对
路飞_Luck
·
2020-03-05 13:15
iOS-block
中使用self是否一定会造成循环引用?
项目中使用block,很多时候都会使用__weak来防止循环引用,但是是否所有的block里面都要使用__weak来修饰?答案:NOblock容易引起循环引用是因为在VC中声明block,VC拥有block,在block中访问self,block拥有self,所以会造成循环引用,但是如果self没有拥有block,在block中使用self还会引起循环引用吗?当然不会喽_比如UIViewanima
精神病患者link常
·
2020-02-24 03:30
iOS-block
的学习
1.Block是C语言层次的语法,有点类似函数指针,具有运行时的特点BlockobjectsareaC-levelsyntacticandruntimefeaturethatallowyoutocomposefunctionexpressionsthatcanbepassedasarguments,optionallystored,andusedbymultiplethreads.iOSSDK4.
歌白梨
·
2020-02-22 15:36
iOS-Block
总结
1、block的特点:block是C语言;block是一种数据类型、可以当做参数,也可以用做返回值block是预先准备好的代码块、在需要的时候调用,(需要好好理解“需要时”);2、定义block3、block引用外部变量在定义block时,如果使用了外部变量,block内部会默认对外部变量做一次copy;默认情况下,不允许在block内部修改外部变量的值;在外部变量声明时,使用__block修饰符
一叶清帆m雪
·
2020-02-21 06:48
IOS-Block
(传值)相关
Block传值.h第二个页面typedefvoid(^sendValue)(NSString*);//多个情况下(NSString*,NSString*);@property(nonatomic,strong)sedValuesv;.m第一个页面-(IBAction)jump:(id)sender{SecondViewController*second=[[SecondViewController
Roger_单
·
2020-02-18 04:20
iOS-Block
implicitly retains ‘self’; explicitly mention ‘self’ to indicate this is intended behavior
项目中出现一堆相同的警告:Blockimplicitlyretains‘self’;explicitlymention‘self’toindicatethisisintendedbehavior,其中的意思是block中使用了self的实例变量_xxx,因此block会隐式的retain住self。Xcode认为这可能会给开发者造成困惑,或者因此而因袭循环引用,所以警告我们要显示的在block中使
malgee
·
2020-02-13 20:37
iOS-Block
implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior
Xcode中出现:Blockimplicitlyretains'self';explicitlymention'self'toindicatethisisintendedbehaviorself.xxx与_xxx的区别1..首先通过self.xxx通过访问的方法的引用:包含了set和get方法。而通过下划线是获取自己的实例变量,不包含set和get的方法。2.self.xxx是对属性的访问;而_x
涛涛灬灬
·
2020-02-10 00:53
iOS-Block
的递归调用
在看线程锁时,无意间看到block的递归调用,之前一直没有想怎么进行block递归调用,这里记录一下。staticNSRecursiveLock*lock;if(lock==nil){lock=[[NSRecursiveLockalloc]init];}staticvoid(^__blockDoLog)(int)=^(intvalue){[locklock];if(value>0){DoLog(v
chsasaw
·
2020-02-08 02:24
iOS-Block
的使用你看我啊
为什么题目是“Block的使用你看我啊”,而不是牛逼哄哄的“Block你看我就够了”,原因是本文并不会讲解Block在C++中的实现部分,而是停留在OC语言中。主要讲诉一些语法和使用。(如果本文中有讲述不对或者不准确的地方欢迎大家提出来)1、Block是什么?-匿名函数-截获自动变量2、Block语法。3、Block类型变量。4、Block的用途。-作为函数参数-反向传值-循环引用(delegat
StrongX
·
2020-01-02 01:22
ios-Block
深入解析
第一部分:block定义`@property(nonatomic,strong)void(^block1)();//定义一个没有返回值没有参数的block@property(nonatomic,strong)int(^block2)();//定义一个有返回值没有参数的block@property(nonatomic,strong)int(^block3)(NSString*value);//定义一
小菜一碟321
·
2019-12-21 16:11
iOS-block
总结及对象之间通信方式的选择
一.block总结block代码块主要用于对象之间的通信(反向传值和方法传递)。首先,我们从内存管理方面来了解一下blockblock:我们称代码块,他类似一个方法。而每一个方法都是在被调用的时候从硬盘到内存,然后去执行,执行完就消失,所以,方法的内存不需要我们管理,也就是说,方法是在内存的栈区。所以,block不像OC中的类对象(在堆区),他也是在栈区的。如果我们使用block作为一个对象的属性
dequal
·
2019-12-19 18:19
iOS-Block
探究
问题:1.Block是什么,block当初是为了解决什么样的问题而设计的?2.为什么要用copy修饰Block3.为什么Block中可以访问局部变量而不能修改4.为什么用__block修饰的局部变量可以在Block内部修改5.为什么使用Block会造成循环引用,怎么解决6.Block,delegate的使用场景1.Block是什么,为什么会出现Block这种技术用一句话来概括就是带有自动变量的匿名
Simba_LX
·
2019-12-16 14:57
iOS-Block
的使用你看我啊
为什么题目是“Block的使用你看我啊”,而不是牛逼哄哄的“Block你看我就够了”,原因是本文并不会讲解Block在C++中的实现部分,而是停留在OC语言中。主要讲诉一些语法和使用。(如果本文中有讲述不对或者不准确的地方欢迎大家提出来)1、Block是什么?-匿名函数-截获自动变量2、Block语法。3、Block类型变量。4、Block的用途。-作为函数参数-反向传值-循环引用(delegat
无所不知的程序员
·
2019-12-01 04:23
iOS-block
全局变量和局部变量的引用
1、全局变量,block可以进行读取和修改。@interfaceViewController(){NSIntegernum;}@implementationViewController-(void)viewDidLoad{//1、block修改成员变量void(^block1)()=^(){++num;NSLog(@"调用成员变量:%ld",num);};block1();}2、局部变量,bloc
爱恨的潮汐
·
2019-11-29 03:41
ios-Block
概述:能够截取自动变量的匿名函数指向函数的指针结构体oc对象使用:-声明格式:返回值类型(^变量名称)(参数列表)int(^myBlock)(inta,intb)void(^myBlock)(void)-定义(变量赋值)格式:变量=^(参数列表){函数体};myBlock=^(inta,intb){return1;};myBlock=^(void){};-调用格式:变量(参数列表);myBlock
忽然之间_1988丶
·
2019-11-08 21:28
iOS-Block
浅谈
前言:Block是开发过程中常用便捷的回调方式,本文简单介绍Block一、Block简介Block对象是C级别的语法和运行时特性,和标准的C函数类似,除了可执行代码外,还可能包含变量自动绑定(栈)和内存托管(堆)。一个Block维护一个状态集。闭包=一个函数「或指向函数的指针」+该函数执行的外部的上下文变量「也就是自由变量」;Block是Objective-C对于闭包的实现。可以嵌套定义,定义Bl
梦蕊dream
·
2019-11-03 09:56
iOS-Block
探究
Blocks是C语言的扩充功能,也可以理解为带有自动变量(局部变量)的匿名函数.C语言中可能用到的变量有自动变量(局部变量),函数的参数,静态变量(静态局部变量),静态全局变量和全局变量.函数中能够传递值的变量有静态变量(静态局部变量),静态全局变量和全局变量.C++和Objective-C使用类可保持变量值且能够多次持有该变量自身,它会声明持有成员变量的类,由类生成的实例或对象保持该成员变量的值
FlyElephant
·
2019-11-03 03:55
iOS - block原理解读(三)
前言在阅读该篇文章前,推荐阅读
ios-block
原理解读(一)
ios-block
原理解读(二)本文解决问题__block原理copy函数,从栈copy到堆的过程(同对象变量)__block原理通过__block
tigerAndBull
·
2019-10-26 15:44
iOS - block原理解读(二)
前言在阅读该篇文章前,推荐阅读
ios-block
原理解读(一)前情提要上篇文章理清了block的实现的基本思路,提到了自动变量中基础类型不能在block内部进行修改。
tigerAndBull
·
2019-10-26 15:37
iOS-Block
使用及注意点
Block定义块与函数相似,是可以获取其他函数局部变量的匿名函数。Block写法(1)无参数void(^block名)()=^{代码块};(2)有参数void(^block名称)(参数列表)=^(参数列表){代码实现};(3)有参数和返回值的返回类型(^block名称)(参数列表)=^(参数列表){代码实现};(4)调用block保存的代码block变量名(实参);(5)typedef简化Bloc
inyourface
·
2019-10-12 15:53
iOS-Block
源码分析
古巷悠悠岁月深,青石老街印旧痕今夜小楼听风雨,不见当年伞下人前言Block作为iOS中老生常谈的问题,也是面试中面试官比较喜欢问的一个问题,下面我们通过源码查看block的底层实现原理什么是BlockBlock:将函数及其上下文组装起来的对象Block本质就是一个对象创建一个PHJBlock类@implementationPHJBlock-(void)test{inta=10;void(^bloc
Jieyi
·
2019-07-15 00:00
ios
block
objective-c
对
iOS-Block
的理解
在OC中,所谓的block:就是一个代码块,我们可以理解为类似一个方法。关于Block的内存管理:都说可以把Block视为一个方法,而所谓方法,在被调用的时候是从硬盘到内存,然后去执行方法的代码,执行完就消失;所以方法的内存不需要我们管理,也就是说,方法是在内存的栈区。同样的,block不像OC中的类对象(OC中的类对象是存放在堆区的),block也存在于栈区;当我们使用block作为一个对象的属
赵赵赵Mr
·
2019-06-03 14:11
iOS-Block
的实现
Block是C语言的扩充功能,是带有自动变量的匿名函数。block将同一逻辑的代码放在一个块,使代码更简洁紧凑,易于阅读,比函数使用更方便,代码更美观,开发中受到广泛的使用。block的底层实现将main.m中的代码通过clang编译成main.cpp代码:intmain(intargc,constchar*argv[]){//insertcodehere...void(^blk)(void)=^
FlyElephant
·
2019-04-16 09:43
iOS-block
的妙用:链式编程(经典应用:Masonry)
iOS开发当中有一个很特殊的存在,这个特殊就是block。在OC当中实现某一个功能都是一个响应对象调用一个响应方法,简而言之就是Target-Action。以UIButton为例:UIButton*button=[UIButtonbuttonWithType:UIButtonTypeCustom];[buttonaddTarget:selfaction:@selector(buttonClicke
狼居胥侯
·
2018-12-03 18:21
iOS-Block
本质
参考篇:
iOS-Block
浅谈前言:本文简述Block本质,如有错误请留言指正。第一部分:Block本质Q:什么是Block,Block的本质是什么?
梦蕊dream
·
2018-08-19 19:32
上一页
1
2
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他