目标 C - 使用局部变量声明的dispatch_apply无法在方法实现中编译C++

objective c - dispatch_apply with local variable declaration doesn't compile in C++ method implementation

本文关键字:方法 实现 C++ 编译 apply 局部变量 dispatch 声明 目标      更新时间:2023-10-16

代码

class XXX
{
   vector<Record> getAll()
   {
      dispatch_apply(3, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) {
        for (int j = 0; j < ...; ++j)
        { ... }
      });
    }
}

无法编译,提示" int XXX::j'不是class的静态成员"。关于块的文档说:"在块的词法范围内声明的局部变量,其行为与函数中的局部变量完全相同。"该文件的扩展名为。mm。我错过什么了吗?

您的代码是正确的,clang将编译它。一般来说,clang的c++块支持比gcc的好得多,如果可以的话,你会想要使用它。如果你需要使用gcc,有一个解决方法,使用::j来引用j。然而,这是非法的c++和clang会阻塞它,所以你可能想要使它有条件的编译器参与…