2017-08-25 55 views
0

我遇到了這個非常奇怪的問題,我真的不知道爲什麼會發生這種情況。無法識別選擇器發送到實例,即使方法真的存在

我正在使用名爲MQTTKit的第三方MQTT客戶端庫。我正在使用它構建一個使用SSL/TLS連接到我的代理的MQTT客戶端。作者在他的博客中說,如果我打算將lib與TLS支持的方法一起使用,那麼我必須將WITH_TLS = 1這個宏添加到構建設置中。

enter image description here

所以我做了什麼,他說。

enter image description here

但是當我編譯和運行程序,我得到一個崩潰,說明了TLS支持的方法是無法識別的。但是當我構建應用程序時,怎麼沒有編譯器問題呢?然後它剛剛崩潰,並說選擇器沒有找到?我不明白這一點。

enter image description here

+0

從'MQTTKit'頁:TLS/SSL支持 Mosquitto支持TLS/OpenSSL的通過SSL,但它在iOS中移除。所以你需要在iOS設備上編譯OpenSSL(iPhone,iPad,iPod Touch,AppleTV)。 –

+0

我建議使用一些其他的庫,通過CommonCrypto而不是OpenSSL來支持TLS/SSL。 –

+0

@ Cy-4AH是的,我知道。我在我的項目中添加了OpenSSL。 –

回答

0

的問題是設置在libMQTT目標WITH_TLS=1宏後問題和重建libMQTT.a

3

從控制檯的消息,看來你在你的應用程序有MQTTKit兩次,一次是作爲鏈接的框架,另一個時間作爲應用程序本身的一部分,其中一人沒有TLS支持編譯。

您可以從應用程序目標中刪除它,然後使用該框架,並將該宏添加到框架的構建設置,或者執行相反的操作。

+0

嗨,我看你在這裏有點意思,但我不明白這是怎麼發生的。我的項目中有4個目標。但只有一個目標成員資格檢查libMQTT.a(MQTTKit不是一個框架)。所以我不明白爲什麼我的應用程序中有兩次MQTTKit ... –

+0

嗨,我剛剛解決了你所說的這個問題,但它仍然不能解決我的主要問題。無法識別的選擇器仍然出現。 –

+0

@finalstatic - 你在'libMQTT'目標上設置了'WITH_TLS = 1'宏,然後重新編譯'libMQTT.a'? – DonMag

相關問題