直接上题:
__block int i = 0; NSLog(@"初始:%p-%d",&i,i); void (^myBlock)(void) = ^{ i ++; NSLog(@"Block内部:%p-%d",&i,i); }; i++; NSLog(@"Block外面:%p-%d",&i,i); myBlock();
打印信息:
2016-11-22 19:50:45.491 WarningDemo[65080:1495427]初始:地址:0x7fff5beb2410值:0
2016-11-22 19:50:45.491 WarningDemo[65080:1495427] Block外面:地址:0x608000420638值:1
2016-11-22 19:50:45.491 WarningDemo[65080:1495427] Block内部:地址:0x608000420638值:2
为什么block外面,还没有执行block的时候,i的地址就发生变化了
问题先留在这里,下一篇文章我会用block源码来详细分析。