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 · 163 阅读 · 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 · 181 阅读 · 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 · 308 阅读 · 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 · 345 阅读 · 1 评论