iOS Block用法示例

Block 的用法在 iOS 开发中挺常见的,简直就是回调和并发的好帮手。如果你之前没怎么用过 Block,看到它的定义和用法,会有点摸不着头脑。但其实 Block 就是让你能在代码里定义局部函数,像传递参数一样传递它,甚至还可以作为返回值。简洁、灵活,提升代码效率,没错就是这么好用。

你可以定义一个返回整型的 Block,像这样:

int (^myBlock)(void) = ^int(void) { return 42; };
。你还可以把它当参数传给方法,或者从方法返回,灵活得不得了。如果你正在用 GCD 做并发,Block 的作用更是必不可少:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{ // 执行耗时操作
  dispatch_sync(dispatch_get_main_queue(), ^{ // 更新 UI });
});

要注意,Block 有个坑——循环引用。这会导致内存泄漏,尤其是你在 Block 里捕获了外部对象时。方法就是使用__weak来避免强引用。

,Block 在开发中还是蛮有用的。如果你熟练掌握了它,编程起来就能得心应手。如果你想深入了解 Block 的更多细节,不妨看看以下几篇文章。

zip 文件大小:22.42KB