tag:blogger.com,1999:blog-8260844445527494264.post4925049917837102047..comments2022-03-03T22:11:27.554+08:00Comments on popcorny的碎碎唸: 探討Objective-C Block (part 2)popcornyhttp://www.blogger.com/profile/17922275447374533899noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-8260844445527494264.post-53871639735156053602012-09-27T17:51:16.826+08:002012-09-27T17:51:16.826+08:00countdown_type countdown1 = createCountdown(10);
... countdown_type countdown1 = createCountdown(10);<br /> countdown_type countdown2 = createCountdown(100);<br /> //从打印了的结果来看 createCountdown函数中的__block NSUInteger counter变量与local static不同, 因为local static变量始终是一个,而从下面结果来看是每个block都生成一个counter变量<br /> //所以我觉得可以认为__block修饰的基本类型变量是存放在block中的, 但是包含它的函数引用了它的内存地址, 这样在函数中也可以修改该变量的值<br /> NSLog(@"%d", countdown1()); //10<br /> NSLog(@"%d", countdown2()); //100<br /> NSLog(@"%d", countdown1()); //9<br /> NSLog(@"%d", countdown2()); //99<br /> NSLog(@"%d", countdown1()); //8<br /> NSLog(@"%d", countdown2()); //98<br />willonboy zhanghttps://www.blogger.com/profile/12794275534464126593noreply@blogger.com