标签:
首先普及一下内存存储区域知识:
typedef void (^blockType)(); // 定义返回值是block类型的函数 blockType test() { int i = 5; blockType bb = ^{ NSLog(@“xxxx i = %d”, i); } // return bb; // 防止被释放,copy到堆区,所以需要改为 return Block_copy(bb); return Block_copy(bb); } int main() { @autoreleasepool { // 接收test的返回值 blockType b1 = test(); // 执行block b1(); // MRC下copy到堆区一份,需要释放该block的控件,所以需要添加一句 Block_release(b1()); Block_release(b1()); } }
// 这个神奇的方法就是: __weak typeof(self) weakSelf = self; // 将block中的self改为weakSelf
标签:
原文地址:http://www.cnblogs.com/qinrui/p/4780249.html