block总结】的更多相关文章

先出2个考题: 1. 上面打印的是几,captureNum2 出去作用域后是否被销毁?为什么? 同样类型的题目: 问:打印的数字为多少? 有人会回答:mutArray是captureObject方法的局部变量,mutArray指针 保存到栈上,那么当执行完captureObject方法后,出去了作用域mutArray变量就会被系统自动释放. 所以当执行captureBlk([[NSObject alloc] init]); 的时候,mutArray为nil,每次打印的为0. 当然上面说的是错的.…
这个是一个比较初级一点的文章,新人可以看看.当然实现这个需求的时候自己也有一点收获,记下来吧. 前两天产品要求在工程的所有数字键盘弹出时,上面带一个小帽子,上面安装一个“完成”按钮,这个完成按钮也没有什么作用,点击一下收回键盘就可以了.但是工程这么大,很多textfield弹出的都是数字键盘,不可能去每个VC里面修改每一个的代码啊. 想到了一个比较好的办法,自定义一个textfield,继承系统的UITextField.这样我自定义的textfield就有了系统UITextField的所有技能,…
IndentationError: expected an indented block 翻译为IndentationError:预期的缩进块 解决方法:有冒号的下一行要缩进,该缩进就缩进…
http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Commit or Rollback transaction in finally block In most of JDBC books, the transaction management idiom that is followed is, after executing the update s…
C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(int data_i32)); callBack.c 1).在doSomeThingCount函数,对运行次数自增,并调用参数--函数. void DSTCount(void(*CallBack)(int data_i32)) { static int numb = 0; numb++; (*Call…
学了OC的block,再写C的回调函数有点别扭,对比下区别,回忆记录下. C的回调函数: callBack.h 1).定义一个回调函数的参数数量.类型. typedef void (*CallBack)(int data_i32); 2).声明一个外部函数指针. extern CallBack myCallBackPTR; 3).声明一个doSomeThingCount函数 void DSTCount(void); callBack.c 1).定义一个函数指针 CallBack myCallBa…
1. 操作系统中的栈和堆 我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构: 栈区(stack):由系统自动分配,一般存放函数参数值.局部变量的值等.由编译器自动创建与释放.其操作方式类似于数据结构中的栈,即后进先出.先进后出的原则. 例如:在函数中申明一个局部变量int b;系统自动在栈中为b开辟空间. 堆区(heap):一般由程序员申请并指明大小,最终也由程序员释放.如果程序员不释放,程序结束时可能会由OS回收.对于堆区的管理是采用链表式管理的,操作系统有一个记录空闲内存地…
以下内容翻译自CSS 2.1官方文档.网址:https://www.w3.org/TR/CSS2/visudet.html#strut 有时,一个元素的盒子的位置和尺寸根据一个确定的矩形计算,这个确定的矩形叫这个元素的包含块.一个元素的包含块根据以下规则确定: 1.根元素所在的包含块叫初始包含块 initial containing block.对于连续媒体设备(continuous media),初始包含块的大小等于视口viewpor的大小,基点在画布的原点(视口左上角):对于分页媒体(pag…
   我们在自定义view的时候,通常要考虑view的封装复用,所以如何把view的事件回调给Controller就是个需要好好考虑的问题, 一般来说,可选的方式主要有target-action和delegate,以及这次要强烈推荐的block.      target-action和delegate方式有个很不方便的地方,就是配置代码和action代码不在同一个地方,你肯定要多写一个selector方法或者delegate方法,这就带来一个问题,一旦代码比较长或者selector方法比较多,找…
在某个添加文本的页面中,leftbarbutton是删除(直接将数组中的这个string删除),rightbarbutton是完成,分别对应两个block,完成的block是一开始写的,写到了viewWillDisappear中(没写到对应的点击事件中,天坑啊),后来在加删除功能时,总是出错,原来是点击了删除按钮后,也会调用完成的block,会修改数据源,导致刷新collectionview各种奇葩问题!!! 注意一个页面中有多个block情况,一定不能随便写到viewWillDisappear…
在完成项目期间,不可避免的会使用到block,因为block有着比delegate和notification可读性更高,而且看起来代码也会很简洁.于是在目前的项目中大量的使用block. 之前给大家介绍了一下在开发的过程中使用到了代理以及block,并详细的介绍了一下delegate和block的相似之处.(如有兴趣可以去看我之前的文章         链接: http://www.cnblogs.com/MasterPeng/p/5210263.html) 主要是因为在开发的时候,有时候由于疏…
iOS4.0开始,Block横空出世,它其实就是c预言的补充,书面点说就是带有自动变量的匿名函数,Block简洁,代码的可读性也高,因此深受广大开发者的喜爱,这一次给大家介绍Block的基本类型和项目中的实际操作. Block的形式如下: Block的基本类型 1.无参数无返回值 void(^tempBlock)() = ^(){ NSLog(@"无参无返回值"); }; //调用 tempBlock(); 2.无参数有返回值 int(^tempBlock)() = ^(){ ; };…
例子1: ; void (^blk)(void) = ^(){ printf("in block %d[%p]\n", val, &val); //in block 10[0x100300020] }; val = ; printf("out block %d[%p]\n", val, &val); //out block 2[0x7fff5fbff82c] blk(); 例子2: __block ; void (^blk)(void) = ^(){…
1. ViewController间传递数据 2. Block的@property必须定义为copy…
BFC——一个我们容易忽视掉的布局神器 今天给大家说说BFC这个概念,在说概念前,先给大家看个例子: 首先,定义三个div块元素   效果: 我们发现,块级元素的排列顺序是从上往下,一块接着一块,在w3c中,是这样解释block-level box的: 在一个块级排版上下文中,盒子是从包含块顶部开始,垂直的一个接一个的排列的. 相邻两个盒子之间的垂直的间距是被margin属性所决定的,在一个块级排版上下文中相邻的两个块级盒之间的垂直margin是折叠的 咱们看个例子: 代码如下: 在图中我们发现…
不使用__block修饰: ; self.myBlock = ^(){ NSLog(@"block num == %d",num); }; num = ; self.myBlock(); NSLog(@"last num == %d",num); // 输入结果: // 2016-09-13 13:13:15.362 block2[7543:562614] block num == 1 // 2016-09-13 13:13:15.363 block2[7543:5…
1.原理 1.1block类型 a.全局bock块   贯彻整个程序 b.栈块  存在于栈内存中,作用域中使用 c.堆块  自行管理其内存 注*:http://blog.parse.com/learn/engineering/objective-c-blocks-quiz/   检验自己了解情况 1.2定义 类函数,闭包 注*:1.block捕获块中出现的外部变量 2.栈块copy之后会形成堆块 3.__weak(ARC)或__block(MRC)来避免循环引用 4.若想深入了解可使用C++理解…
1.block的特点:      block是C语言:      block是一种数据类型.可以当做参数,也可以用做返回值:--总之,对比int的用法用即可(当然,定义的时候,最好跟函数对比):      block是预先准备好的代码块.在需要的时候调用,(需要好好理解"需要时"):   2.定义block      有返回值.有参数:返回类型 ^(blockName)(参数) =  ^返回类型(参数列表){///代码 }:      无返回值.有参数:void ^(blockName…
Block在整个iOS开发中无所不见,很重要,很重要,文本在这里block的简单使用介绍.我们可以简单地定义.使用block. 1. Block和C的指针函数很像,但比C的函数灵活多了.废话了.... 例子比较: //C函数 int funSum(int a, int b) { return a + b; } int main(int argc, const char * argv[]) { @autoreleasepool { //定义了pointSum这种指针类型, 这种指针类型指向函数 t…
1.对block的理解 >  block是iOS4.0之后出现的,是仿照java中匿名函数所创造的,它是c级别的语法,效率比协议-代理高 >  block的是一个匿名函数(没有名字的函数) > 我们可以把block变量看做一个OC的变量,只是这个变量指向的是一个函数. // 我们可以为block变量赋值, 赋值一个匿名函数. 2.对block的使用 2.1 最简单的block //声明一个最简单的block,没有参数和返回值, ^ 是block的特殊符号 void(^)()  _myFi…
今天看到豆瓣面试官的一篇文章,讲到关于CSS中的一个知识点:Block formatting context  ,感觉这个确实挺有用,同时我也挺赞同作者的一些观点的,这里就不展开谈我的感受了, 此文只聊聊技术. 1.什么是Block formatting context? Block Formatting Context提供了一个环境,HTML元素在这个环境中按照一定规则进行布局.一个环境中的元素不会影响到其它环境中的布局,就是说处在于不同Block Formatting Context环境中的…
1. Block的声明和线程安全Block属性的声明,首先需要用copy修饰符,因为只有copy后的Block才会在堆中,栈中的Block的生命周期是和栈绑定的,可以参考之前的文章(iOS: 非ARC下返回Block).另一个需要注意的问题是关于线程安全,在声明Block属性时需要确认“在调用Block时另一个线程有没有可能去修改Block?”这个问题,如果确定不会有这种情况发生的话,那么Block属性声明可以用nonatomic.如果不肯定的话(通常情况是这样的),那么你首先需要声明Block…
主要内容: block基本声明格式 block访问区域变量 block代替代理 block基本声明格式: ^(传入的参数){具体代码}; 注: Block实体开头是"^",接着是由小括号所包起来的参数列(比如 int a, int b, int c),行为主体由大括号包起来,专有名字叫做block literal.行为主体可以用return回传值,类型会被compiler自动辨别.如果没有参数列要写成: ^(void). 最简单的例子: ^(int a){return a*a}; 简单…
用了几年的css了,css中inline | block |inline-block|table|flex从来没有做过系统的整理和分析,网上的分析文章也很多,零散. 今天有空,就在这做一下整理分析 block 解释:指定对象为块元素(占据一定矩形空间,可以通过设置高度.宽度.内外边距等属性,来调整的这个矩形的样) 特点:1.处于常规流中时,如果width没有设置,会自动填充满父容器  2.可以应用margin/padding  3.在没有设置高度的情况下会扩展高度以包含常规流中的子元素  4.处…
Block Markov coding在一系列block上进行.在除了第一个和最后一个block上,都发送一个新消息.但是,每个block上发送的码字不仅取决于新的信息,也跟之前的一个或多个block上的信息有关.所以,称为Markov encoding.之前blocks上的信息,可以是之前消息提取的信息,也可以是其他用户的合作信息. Non-Markov coding,每个block的码字只取决于现在的消息,相应地,接收机只利用当前block的消息译码. 非规则编码和连续译码首先在中继信道中提…
代理使用原则: 代理方法的参数是要传的值,代理方法的返回值是要得到的值(即要调用的类回传的值),并且在实现的代理方法中的值就是原来的类要传的值(设置delegate=self),  比如2个类 A,B A类中有个代理方法(int)Adelegate(int a) B类实现代理方法(int)Adelegate(int a){ return b:} 那么 a是传给B类的值,而b是传给A类的值.  例子: 首先关于代理 @protocol NextViewControllerDelegate<NSOb…
最近在改公司外包项目的代码,发现了一种block传值的用法很有意思,记录一下 A.B两个页面 在B界面.h中定义 @property (nonatomic,strong) void(^block)(NSString *address); 在A界面跳转至B界面时加入代码 B *bMod = [[B alloc]initWithNibName:@"B" bundle:nil];//B *bMod = [[B alloc]init]; bMod.block = ^(NSString *add…
以前看到Block觉得也没什么,不就是类似函数的东西,这东西在C#里就是委托,在Java里就是块,有什么稀奇的.但看到一点进阶的内容后,发现这个东西确实有用. 所以做下总结. 一.块的基本用法 块的语法构成: ^[返回值类型](形参1,形参2,...) { //执行体 } 在JS里,函数是可以做为变量的,OC的块也用变量接收,变量的声明语法: //可以把形参名省略,只保留类型 返回值类型 (^块名) (形参1,形参2,...); 再来看几个例子就懂基本怎么用了: int main(int arg…
分区里的inode号是0号和1号的block 我相信大家在使用Linux的时候都遇到过误删文件系统数据的情况,不管是自己误删还是帮人家恢复误删 现在用的比较多的恢复工具大概是ext3grep .extundelete 这两个 当然本文不是要说这两个工具的使用方法,而是介绍每个分区里的inode号为0或1号的block到底是什么 在使用ext3grep .extundelete 的时候,基本上都会有这样一个步骤 在Linux下可以通过“ls-id”命令来查看某分区目录的inode值,可以输入: […
block 分为三种 NSGlobalBlock,NSStackBlock, NSMallocBlock. NSGlobalBlock:类似函数,位于text段: NSStackBlock:位于栈内存,函数返回后Block将无效: NSMallocBlock:位于堆内存. NSGlobalBlock我们可以通过是否引用外部变量来识别,未引用外部变量即为NSGlobalBlock,可以当做函数使用.否则是NSStackBlock. NSMallocBlock只需要对NSStackBlock进行co…