ios block 内存管理时使用注意
XMGStudent *stu = [[XMGStudent alloc] init]; __weak XMGStudent *weakStu = stu; stu.block = ^{ NSLog(@"begin - block"); XMGStudent *strongStu = weakStu; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [strongStu study]; }); }; stu.block(); /* 1.默认情况下, block是放在栈里面的 2.一旦block进行了copy操作, block的内存就会放在堆里面 3.堆里面的block(被copy过的block)有以下现象 1> block内部如果通过外面声明的强引用来使用某个对象, 那么block内部会自动额外产生一个强引用指向所使用的对象 2> block内部如果通过外面声明的弱引用来使用某个对象, 那么block内部会自动额外产生一个弱引用指向所使用的对象 */ NSLog(@"----over---");