您的位置:首页 > 其它

OC当中的闭包

2016-08-12 16:20 211 查看
OC当中闭包的基本定义

int (^sumBlock)(int,int)


随后定义其具体的实现方式
 int (^sumBlock)(int,int) = ^(int a,int b){
return a + b;
};
关于swift 和OC中闭包的区别 可以看这个博客 目前个人也不是很看得懂。。。
http://www.jianshu.com/p/d0d7b519fec1
随后OC当中的闭包 是会捕获外部的变量的,但不会对其进行修改,若想进行修改的话,外部的变量需要定义成 __block

__block int value = 10;
这样在OC中便可以进行捕获 并进行修改

OC当中的闭包经常出现循环引用的方法 在此可以在外部将其定义成weak 随后进行在闭包中的调用即可

__weak typeof (view) weakView =  view;
__weak typeof (self) myself = self;
具体的可看这个文档
http://www.cnblogs.com/ludashi/p/3903054.html
[self performSelector:@selector(EnterScreen) withObject:nil afterDelay:enterDuraton];


表示在runLoop在经过afterDelay时间后 执行这个函数 若想中间停止执行这个函数 可以用

[NSObject cancelPreviousPerformRequestsWithTarget:self];

OC当中对于property systenze 和assign retain的进一步解释
http://www.devtalking.com/articles/you-should-to-know-property/
对于数组 OC当中都是对于他们要进行初始化操作的

这里bulletComment是一个数组 如果不存在的话 就要进行初始化加载

-(NSMutableArray *)bulletComments{
if(!_bulletComments){
_bulletComments = [NSMutableArray array];
}
return _dataSource;
}
-(NSMutableArray *)bulletViews{
if(!_bulletViews){
_bulletViews = [NSMutableArray array];
}
return _bulletViews;
}


在类的初始化过程当中 首先也要执行一句 if(self = [super init])

赋值并测试nil只是为了防止超类在初始化过程中发生改变 而返回不同的对象
http://www.jianshu.com/p/4c9112f8625d
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: