簡要地說,在使用Xcode 9 Beta時(shí),我遇到了以下警告:不建議在Swift 4模式下使用Swift 3 @objc推斷。請解決已棄用的@objc推斷警告,啟用“使用已棄用的Swift 3 @objc推斷”日志記錄來測試您的代碼,并禁用Swift 3 @objc推斷。**經(jīng)過研究,我仍然不知道如何解決該問題。我將不勝感激有關(guān)如何解決此問題的所有技巧以及對所發(fā)生情況的解釋。我的目標(biāo)是更好地理解我的代碼正在發(fā)生的事情。
3 回答

智慧大石
TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
通過將目標(biāo)的“ Swift 3 @objc Inference”構(gòu)建設(shè)置更改為“ Default”,我擺脫了此警告。
從這篇文章:
在Swift 4之前,編譯器自動(dòng)將一些Swift聲明提供給Objective-C。例如,如果從NSObject繼承了一個(gè)子類,則編譯器會為此類中的所有方法創(chuàng)建Objective-C入口點(diǎn)。該機(jī)制稱為@objc推斷。
在Swift 4中,不建議使用這種自動(dòng)@objc推斷,因?yàn)樯伤羞@些Objective-C入口點(diǎn)的成本很高。當(dāng)“ Swift 3 @objc Inference”設(shè)置設(shè)置為“ On”時(shí),它將允許舊代碼起作用。但是,它將顯示需要解決的棄用警告。建議“修復(fù)”這些警告并將設(shè)置切換為“默認(rèn)”,這是新Swift項(xiàng)目的默認(rèn)設(shè)置。
另請參閱此Swift提案。
- 3 回答
- 0 關(guān)注
- 722 瀏覽
添加回答
舉報(bào)
0/150
提交
取消