即使方法确实存在,也无法识别的选择器发送到实例

Unrecognized Selector sent to instance even if method really exists

我遇到了这个非常奇怪的问题,我真的不知道为什么会这样。

我正在使用名为 MQTTKit 的第三方 MQTT 客户端库。我正在使用它构建一个 MQTT 客户端,该客户端使用 SSL/TLS 连接到我的代理。作者在他的博客中说,如果我要将 lib 与 TLS 支持的方法一起使用,我必须将 WITH_TLS=1 这个宏添加到构建设置中。

所以我照他说的做了。

但是当我编译和 运行 程序时,我遇到了一个崩溃,指出无法识别 TLS 支持的方法。但是为什么我构建应用程序时没有编译器问题呢?然后它就崩溃了,说找不到选择器?我不明白这一点。

从控制台中的消息来看,您的应用程序中似乎有两次 MQTTKit,一次作为链接框架,另一次作为应用程序本身的一部分,其中一个是在不支持 TLS 的情况下编译的。

您可以将其从应用程序目标中删除,只使用框架,然后将宏添加到框架的构建设置中,或者执行相反的操作。

在 libMQTT 目标上设置 WITH_TLS=1 宏并重建后问题已解决 libMQTT.a