[转载] 深入理解 OC/C++ 闭包
背景
苹果的 Objective-C 编译器允许用户在同一个源文件里自由地混合使用 C++ 和 Objective-C,混编后的语言叫 Objective-C++。相对于其它语言(例如 Swift、Kotlin、Dart 等)和 C++的文件隔离和架桥通信(例如 Kotlin 使用 JNI
,Dart 使用 FFI
),Objective-C 和 C++的同文件混编方式无疑是令人舒畅的。OC/C++混编虽然可以在一个文件中进行编写,但是有一些注意事项需要解:Objective-C++没有为 OC 类增加 C++的功能,也没有为 C++增加 OC 的功能,例如:不能用 OC 语法调用 C++对象,也不能为 OC 对象增加构造函数和析构函数,也不能将this和self互相替换使用。类的体系结构是独立的,C++类不能继承 OC 类,OC 类也不能继承 C++类。
本文主要就之前令人困惑的 OC 的Block
和 C++的 lambda
混编问题 做一些探索。
实验环境:C++版本为 C++14,OC 只局限于 ARC。