用OC
寫一個帶返回值的函數,不管在OC
中調用,還是在Swift
中調用,不會出現報錯和警告;
而用Swift
寫一個帶返回值的函數,在OC
和Swift
中調用會出現什麼問題呢?
下面我用resignFirstResponder
這個函數舉例,在SearchBar.swift
中我對其進行了重寫
解決辦法:
方法一:在調用的地方進行如下設置
//OC
(void)[self.searchBar resignFirstResponder];
//Swift
_ = searchBar.resignFirstResponder()
方法二:只需在func
前添加@discardableResult
@objc @discardableResult override func resignFirstResponder() -> Bool {
super.resignFirstResponder()
return textField.resignFirstResponder()
}
對比兩種方法你會發現第二種方法更好;不過要注意的是,@discardableResult
是Swift 3
之後引入的,在此之前是使用@warn_unused_result