Swift-方法雜談

方法調用

話說最近一直在抽空學習Swift,越發感覺Swift的神奇之處,今天我們就來談談Swift的方法。

衆所周知,Swift中使用關鍵詞func聲明方法,如果聲明私有方法,則需要在func前面添加關鍵詞private,有一種Java的既視感啊。

這也挺好啊,畢竟Swift是面向對象的語言嘛,要保證其封裝性,但是就在今天我卻突然發現,當我對一個控制器類進行擴展後,在擴展裏面將方法聲明爲私有,這時候我發現當我用按鈕的點擊事件來調用時發現不能調用了,代碼如下:

    // 增加擴展
extension MainViewController {
    // 1.設置中間按鈕
    func setButton() {
        composeButton.addTarget(self, action: "plusAction", for: .touchUpInside)
        composeButton.addTarget(self, action: #selector(MainViewController.plusAction), for: .touchUpInside)

    }
}

extension MainTabBarViewController {
    // 按鈕點擊事件
    private func plusAction() {
        print("plus")
    }
}

我嘗試了Swift的兩種調用方式都無法調用,後來搜了一下資料,別人給出了意見,那就是需要用到關鍵詞@objc,於是我試了一下,發現只有第一種調用方式可以,第二種依然報錯,貼出正確代碼:


/// 增加擴展
extension MainViewController {
        composeButton.addTarget(self, action: "plusAction", for: .touchUpInside)
    }
}

extension MainTabBarViewController {
    // 1.中間按鈕點擊事件
    @objc private func plusAction() {
        print("plus")
    }
}

感覺Swift有好多東西都跟OC不一樣了~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章