在java中没有这样的东西,一个类一旦是 final的 ,这个类就不能再被添加方法, 但是C#能够做到,可以给 sealed 类添加新的方法,这点我还是比较喜欢c#的。 这就是C#中的扩展方法。 那么什么情况下我们才需要去给一个类写扩展方法呢? 系统自带的类型,我们无法去修改; 修改源代码需要较大的... ...
Block的实质是Objective-C的对象 1. Block的使用 Block的使用其实相当于代理,一般是跨越两个类来使用的。比如作为property属性或者作为方法的参数,这样就能跨越两个类了(参考:“Block全面分析”) 如下为声明为property属性的方法 2.__block关键字的使 ...
分类:
其他好文 时间:
2016-12-28 20:32:56
阅读次数:
223
在 《iOS面试题集锦(附答案)》 中有这样一道题目: 在block内如何修改block外部变量?(38题)答案如下: 默认情况下,在block中访问的外部变量是复制过去的,即:写操作不对原变量生效。但是你可以加上 __block 来让其写操作生效,示例代码如下: __block int a = 0 ...
分类:
移动开发 时间:
2016-05-24 19:09:19
阅读次数:
326
block的标志:^ 特点: 1、可以保存代码 2、有返回值 3、有形参 4、调用方式和c语言一样 5、可以访问外部变量,但不能修改变量的值;如果使用__block关键字修饰的变量才可以。 1)创建 格式: 返回类型 ^block名称(参数类型表)=^(参数表){ 代码; }; block跟函数很像 ...
分类:
其他好文 时间:
2016-04-28 23:49:00
阅读次数:
175
blockblock用来保存一段代码block的标志:^block跟函数很像:可以保存代码、有返回值、有形参、调用方式跟调用方法一样block内部可以访问外面的变量默认情况下,block内部不能修改外面的局部变量给局部变量加上__block关键字,这个局部变量就可以在block内部修改利用typed...
分类:
其他好文 时间:
2015-08-29 12:26:47
阅读次数:
154
结论:在block里面修改局部变量的值都要用__block修饰...
分类:
移动开发 时间:
2015-05-13 21:56:42
阅读次数:
149
1、block 在程序运行中保存一段代码
block标志:^
可以保存代码,有返回值,有形参
2、定义block变量
int (^sumblock)(int, int);
3、block默认可以访问外面的变量,不可以修改外面的局部变量
给局部变量加上_block关键字,这个局部变量就可以在block内部修改
4、
//没有形参...
分类:
其他好文 时间:
2015-05-04 22:06:47
阅读次数:
123
block对外部变量的内存管理
代码块在ios中通常用于回调,本文主要介绍block对外部变量的管理机制。我们知道如果要在block中使用block外面的变量,如果该变量是局部变量,就要先将其申明为__block类型。为什么呢?这就涉及到block对外部变量的内存管理。
一、基本数据类型
先看下面测试代码:
//局部变量
- (void)localDataTest
{...
分类:
移动开发 时间:
2015-03-21 15:42:11
阅读次数:
1005
关键字:ARC __weak __block__weak不增加引用,__block增加引用。举例:对象内有一个强引用的block成员变量,此成员变量又强引用该对象,若对象不经过__weak处理,则二者循环引用。参考:http://www.cocoachina.com/bbs/3g/read.php?...
分类:
移动开发 时间:
2014-12-30 18:55:16
阅读次数:
722
最近了解了一下block的应用 (其实早该掌握了 ) ,然后稍微整理了一下。
Block 是一个C Level的语法以及运行时的一个特性,和标准C中的函数(函数指针)类似,但是其运行需要编译器和运行时支持,从iOS4.0开始就很好的支持Block.
block的好处,主要1.用于回调特别方便, 2. 可以延长对象的作用区域。(__block关键字,将局部变量转变为全局变量)。但是block默认...
分类:
其他好文 时间:
2014-12-17 21:03:41
阅读次数:
246