首页 > 解决方案 > 从不兼容的类型'void(^__strong)(int,const char *,int)'分配给'void(*)(int,const char *,int)'

问题描述

我对Objective-C不太熟悉,所以这可能是一个非常明显的错误。

Assigning to 'void (*)(int, const char *, int)' from incompatible type 'void (^__strong)(int, const char *, int)'

进行此分配时遇到上述错误

log_cfg.cb = callback;

这是callback

void (^callback)(int, const char*, int) = ^(int level, const char* data, int len) {

    ...

};
    

标签: objective-c

解决方案


错误消息表明log_cfg.cb需要一个函数指针,但您提交了一个块。块不是函数指针,你不能轻易地混合两者(除了在 swift 中,它更容易)。

如果您不需要捕获值,您可以在(全局?)函数中编写块代码并提交该函数指针。或者检查有没有办法将 ObjectiveC 块包装到函数指针中?


推荐阅读