1.代理方法
這里先上代碼了
①創(chuàng)建一個(gè)代理方法
protocol FirstViewControllerDelegate{
fun firstDelegate()
}
上面為swift聲明的最簡(jiǎn)單的一種代理格式
@objc protocol FirstViewControllerDelegate: NSObjectProtocol{
optional func firstDelegate(returnString:String)
}
在這個(gè)代理的聲明中,可以明顯看出歌逢,增加了一些額外的修飾符
1》引入@objc是為了引入 optional滞伟,用 optional 修飾代理方法亚茬,那么這個(gè)方法就變成可選方法,無論在代理對(duì)象中是否實(shí)現(xiàn),都不受影響撵颊。
2》引入 NSObjectProtocol 是因?yàn)槲覀內(nèi)绻胗?weak 修飾代理屬性,需要繼承自這個(gè)類惫叛,這里有一篇關(guān)于 weak 修飾 Delegate倡勇,防止循環(huán)引用的文章,不明白的可以看看
②聲明一個(gè)代理對(duì)象
weak var delegate: FirstViewControllerDelegate?
這里用 weak 修飾嘉涌,防止循環(huán)引用的產(chǎn)生
③觸發(fā)代理事件
if self.delegate!.respondsToSelector(Selector("firstDelegate:")){
self.delegate!.firstDelegate!("delegate")
}
1》self.delegate!.respondsToSelector(Selector("firstDelegate:"))方法來判斷是否有對(duì)象執(zhí)行代理事件
2》self.delegate妻熊!.firstDelegate("delegate")觸發(fā)代理事件
④在代理的實(shí)現(xiàn)控制器中引入代理
class ViewController: UIViewController,FirstViewControllerDelegate
與 Object-C 不同,只需要“洛心,”添加即可
⑤實(shí)現(xiàn)代理方法
func firstDelegate(returnString: String) {
print(returnString)
}
不知道是不是我的打開方式有問題~在 swift 里邊固耘,好多 Object-C 里邊的智能補(bǔ)全题篷,在這兒都不管用了自己慢慢打吧