方法調用
話說最近一直在抽空學習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不一樣了~