【问题标题】:Assigning to 'void (*)(int, const char *, int)' from incompatible type 'void (^__strong)(int, const char *, int)'从不兼容的类型'void(^__strong)(int,const char *,int)'分配给'void(*)(int,const char *,int)'
【发布时间】:2020-09-18 18:53:40
【问题描述】:

我对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) {

    ...

};
    

【问题讨论】:

  • log_cfg.cb的属性定义是什么样的?

标签: objective-c


【解决方案1】:

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

如果您不需要捕获值,您可以在(全局?)函数中编写代码块并提交该函数指针。或查看Is there a way to wrap an ObjectiveC block into function pointer?

【讨论】:

  • 谢谢,这让我朝着正确的方向前进!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-12
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多