
block
北方人深漂
公众号:编程微享
知乎主页:http://www.zhihu.com/people/qi-fu-18-79
展开
-
block循环引用
typedef void(^GHBlock)(void); 底层源码 typedef void(*GHBlock)(void); struct __main_block_impl_0 { struct __block_impl impl; struct __main_block_desc_0* Desc; GHPerson *person; __main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, GHPerso原创 2021-01-20 16:31:03 · 221 阅读 · 0 评论 -
block的内存管理
MRC环境下: 使用__block会使得底层将变量或者下面的person对象先包装成一个对象。 源码 typedef void(^GHBlock)(void); __block GHPerson *person = [[GHPerson alloc]init]; GHBlock block = ^{ NSLog(@"%p",person); };原创 2021-01-19 11:33:52 · 246 阅读 · 0 评论 -
iOS 判断变量或者对象存储位置
int age = 10; int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... int a = 100; NSLog(@"数据段:age %p",&age); //数据段:age 0x100008208 NSLog(@"栈:a %p",&a); //栈:a 0x7ffeefbff41c原创 2021-01-15 14:25:57 · 358 阅读 · 0 评论 -
block的几种类型(__NSGlobalBlock__,__NSStackBlock__,__NSMallocBlock__)
void(^block)(void) = ^{ NSLog(@"Hello"); }; NSLog(@"%@",[block class]); //__NSGlobalBlock__ NSLog(@"%@",[[block class] superclass]); //NSBlock NSLog(@"%@",[[[block class] superclass] superclass]);//NSObject原创 2021-01-15 10:23:16 · 396 阅读 · 1 评论