- 一般来说,Objective-C中的Block和Swift中的闭包用法并无显著区别,两者都是作为匿名函数来使用的,两者都可以作为变量、参数使用
- 除了写法上的区别外,两者最显著的区别在于对外部变量值捕获的时机。
- Block在定义函数的时候已经完成了对引用的外部变量值的拷贝,在函数内部与外部修改这个变量值不会产生相互影响。如果想在函数内部修改引用的外部变量值并影响到外部,则需要使用__block修饰变量
- 而闭包在则是在函数调用的时候再去捕获引用的外部变量值,在闭包内部对外部变量值的改变也会影响到外部。简言之,两者的区别就在与闭包默认用__block修饰了引用的外部变量。
OC中的Block和swift中的闭包
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...