iOS __block用法】的更多相关文章

没有__block qualifier的primitive c types会直接在创建block的时候被capture到block里.有__block qualifier的话,会在调用block的时候取&number地址所指向的值,如果调用block的时候已经超过了number声明的scope,那么结果是undefined.…
IOS NSInvocation用法简介 2012-10-25 19:59 来源:博客园 作者:csj007523 字号:T|T [摘要]在 iOS中可以直接调用某个对象的消息方式有两种,其中一种就是NSInvocation,本文介绍IOS NSInvocation用法,并提供简单的示例代码供参考. 在 iOS中可以直接调用某个对象的消息方式有两种: 一种是performSelector:withObject: 再一种就是NSInvocation. 第一种方式比较简单,能完成简单的调用.但是对于…
果然还是对最基础的知识了解不透彻,今天看一看iOS中的两个修饰符:__block和__weak .也是做一下温习吧. 1.先说weak,<弱引用> 我们知道weak的使用,比如声明一个控件属性,就会用到weak. 看代码: @property(nonatomic,weak)UILabel *label; 当然这并不是说声明控件就一定使用weak,相反的我在手动创建控件是大多数会使用strong.但如果你比较细心的话,你会发现我们使用xib时,使用的却是weak这一属性.那问题来了,我们使用st…
Block简介: Block的实际行为和Function很像,最大的差别是在可以存取同一个Scope的变量值.Block实体形式如下: ^(传入参数列){行为主体}; Block实体开头是“^”,接着是由小括号所包起来的参数列(比如 int a, int b, int c),行为主体由大括号包起来,专有名字叫做block literal.行为主体可以用return回传值,类型会被compiler自动辨别.如果没有参数列要写成: ^(void). 例如下面的一个例子: [cpp] view pla…
关于__block 与__weak http://stackoverflow.com/questions/19227982/using-block-and-weak 一下是一些区别的介绍 MRC: __block 能够使访问的变量能够在block中的修改生效,__block能够避免retain cycle. ARC:__block可能会造成retain cycle. 此时如果对原子类型(primitive)的数据如果不用__block修饰的话系统会自动在编译的时候报错的.…
这段代码动态的创建了一个UIButton,并且把相关常用的属性都列举了.希望对大家有用.   //这里创建一个圆角矩形的按钮UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // 能够定义的button类型有以下6种,// typedef enum {// UIButtonTypeCustom = 0, 自定义风格// UIButtonTypeRoundedRect, 圆角矩形 // UIButtonTy…
iphone跬步之--错误信息 NSError   一.获取系统的错误信息 比如移动文件时,获取文件操作错误: NSError *e = nil;[[NSFileManager defaultManager] moveItemAtPath:sourcePath toPath:targetPath error:&e];if (e) { NSLog(@"move failed:%@", [e localizedDescription]);} 先定一个空的错误信息 NSError *…
看下图 在c语言中,2个独立的函数是不可能互相访问局部变量的,但是__block提供了这个功能,它不单单能读变量,还可以对变量进行写!上图说明,block获得了i最后的真实值5,没有只取得0,这都是"__block"的作用.再看j,由于没有__block前缀,只取得了0,没有获得5.__block的作用简单的说,就是copy了一份副本到heap中,并维护这个副本的生存,所以可以使用已经结束了的函数中的局部变量.…
qi前言:写一个宏来选择性地编译与运行为不同iOS所写的代码来支持多个版本的ios工程 #if __IPHONE_OS_VERSION_MIN_REQUIRED #import "xxxxxxxx ios7以下版本" #else #import "xxxxxxxx 比如ios7以上版本" #endif 官网文档介绍: #ifdef __IPHONE_OS_VERSION_MIN_REQUIRED /* make sure a default max version…
默认情况下,在block中访问的外部变量是复制过去的.但是可以加上 __block  来让其写操作生效. 原理: Block 不允许修改外部变量的值,这里所说的外部变量的值,指的是栈中指针的内存地址. __block 所起到的作用就是只要观察到该变量被 block 所持有,就将 外部变量 在栈中的内存地址放到了堆中.进而在 block 内部也可以修改外部变量的值. Block 不允许修改外部变量的值,是考虑到了block的特性,block也属于 函数 的范畴,变量进入block,实际就是已经该变…