Swift中UIButton點(diǎn)擊事件為何要加上@objc

原因

一般的方法前面是不需要寫@objc的,但selector對(duì)應(yīng)的方法前面必須加,因?yàn)閟elector其實(shí)是 Objective-C runtime 的概念。在 Swift4 中,默認(rèn)情況下所有的 Swift 方法在Objective-C 中都是不可見的,所以你需要在這類方法前面加上@objc關(guān)鍵字,將這個(gè)方法暴露給 Objective-C,才能進(jìn)行使用。

更優(yōu)雅的方式

算是一種取巧的方式吧。用 extension。 把需要加 @objc 的方法。放到對(duì)應(yīng)的 extension 里面。在 extension 外部直接用 @objc。


class ViewController: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()


        perform(#selector(test))

        perform(#selector(handleClick))


    }

}

@objc

extension ViewController {

    func test() -> Bool {

        return false

    }


    func handleClick()  {


    }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容