block
眼睛会放光
这个作者很懒,什么都没留下…
展开
-
_ _block
1 _ _block 修饰的变量可以在block内外修改; 例: __block NSString *str = @"1"; void(^myBlock)(NSString *s)=^(NSString *s){ str = @"b"; NSLog(@"%@",str); }; NSLog(@"%@",str); myBl...原创 2019-04-02 08:39:29 · 124 阅读 · 0 评论 -
block-arc与mrc下的存储区域
block存储区总结: 1 未任何引用外部变量,不管是arc或mrc,都是在global区; 2 如果引用了外部变量,在mrc下,在栈区;在arc下,block自动会copy到堆区; 一 ARC: NSGlobalBlock:全局block,未访问任何外部变量; NSMallocBlock: 访问了外部变量,堆 block,当引用计数为 0 时会被销毁; NSStackBlock:栈b...原创 2019-04-02 14:55:37 · 269 阅读 · 0 评论 -
block-释放
总结: 1、NSStackBlock在函数返回时销毁,NSMallocBlock引用计数为0时释放; 2、viewcontroller对象的NSGlobalBlock全局block在对象释放时销毁,NSGlobalBlock局部block在函数返回时销毁; 例:xcode的mrc下,引用外部变量时block在栈区,栈区block在函数返回时已经销毁; @interface ViewC...原创 2019-04-02 16:58:21 · 477 阅读 · 0 评论 -
block-clang
总结:一个 block 实际是一个结构体,跟对象很像(也要考虑内存管理),但不等同于对象(可以参考runtime.h的objc_class),它主要由一个 isa 和 一个 impl 和 一个 descriptor 组成。 1 xocde创建c程序block1.c: #include <stdio.h> int main() { ^{ printf("Hello, Worl...转载 2019-04-02 16:59:23 · 147 阅读 · 0 评论